洛谷题面传送门

题解里一堆密密麻麻的 Raney 引理……蒟蒻表示看不懂,因此决定写一篇题解提供一个像我这样的蒟蒻能理解的思路,或者说,理解方式。

首先我们考虑什么样的牌堆顺序符合条件。显然,在摸牌任意时刻,你手中的牌允许你继续无限制摸的牌是一段区间,即存在一个位置 \(p\),满足你在不使用新摸出来的牌的机会下能够恰好摸到第 \(p\) 张牌。考虑如果我们新摸出来一张牌会产生怎样的影响,假设摸出一张 \(w_i=x\) 的牌,那么我们肯定会在耗完目前手中牌的机会,也就是摸完第 \(p\)​ 张牌后使用该牌,这样我们恰好会在摸第 \(p+1,p+2,\cdots,p+x\) 张牌时使用这张牌摸牌的机会。因此我们考虑将原问题转化为一个区间覆盖的问题,一个点覆盖了即意味着该点能够被摸到,考虑这样的过程:

Process:我们从左到右扫一遍,如果扫到一个 \(w_i>0\) 的点,就在该点后面找到距离该点最近的一段长度为 \(w_i\) 且区间中所有点都没有被覆盖的区间,并将这段区间所有点都设为被覆盖,那么一个牌堆符合条件当且仅当不存在某个 \(\le m\) 的位置没有被覆盖。

这个过程看起来有点鸡肋,我们考虑稍微变换一下,我们不一定要覆盖完整的区间,我们只需要向后找到 \(w_i\) 个没有覆盖的点并将它们设为被覆盖即可,不难发现这样不合法的情况,在我们新的过程中依然不合法,原来合法的情况依旧合法。

这样还是不好直接维护,不过思路理到这一步,做过 CF838D Airplane Arrangements 的同学们应该会感到特别熟悉。没错,这道题和那道题安排飞机座位的过程是完全一致的。按照那题的套路,我们在后面补上一个 \(m+1\) 号点,并将这个问题放到一个环上,那么一个牌堆符合条件当且仅当第 \(m+1\) 个位置没有被占用。不难发现由于没有被占用的位置只有一个,因此我们考虑做这样一个变换:将牌堆沿着环按顺时针方向分别旋转 \(1,2,3,\cdots,m\),那么由于环的对称性,对于一个合法的牌堆,在这些变换后的牌堆中,空着的位置分别是 \(1,2,3,\cdots,m\),也就是说全部 \(m+1\) 个位置是等价的,因此我们只用拿总方案数除以 \(m+1\) 即可。那么怎么计算总方案数呢?\(m!\)?Nope。由于我们引入了一个 \(m+1\) 位置,因此我们也要相应地添上一个 \(0\),因此总共 \((m+1)!\) 种可能,但由于我们新增的 \(0\) 与其他 \(0\) 并没有区别,也即,所有 \(0\) 都可以充当这个新增的 \(0\),对于每个合法的牌堆我们答案重复计算了 \(m-n+1\) 次,因此答案还需除以 \(m-n+1\)。

于是

\[ans=\dfrac{(m+1)!}{(m-n+1)(m+1)}=\dfrac{m!}{m-n+1}
\]
#include <cstdio>
using namespace std;
const int MOD=998244353;
int n,m,res=1;
int main(){
scanf("%d",&n);
for(int i=1,x;i<=n;i++) scanf("%d",&x),m+=x;
for(int i=1;i<=m;i++) if(i^(m-n+1)) res=1ll*res*i%MOD;
printf("%d\n",res);
return 0;
}

洛谷 P6672 - [清华集训2016] 你的生命已如风中残烛(组合数学)的更多相关文章

  1. UOJ273 [清华集训2016] 你的生命已如风中残烛 【数学】

    题目分析: 把$0$卡牌看成$-1$.题目要求前缀和始终大于等于$1$. 最后添加一个$-1$,这样除了最后一位之外大于等于1,最后一位等于0. 构造圆排列.这样的话一个圆排列只有一个满足的情况,然后 ...

  2. 洛谷 P6667 - [清华集训2016] 如何优雅地求和(下降幂多项式,多项式)

    题面传送门 wjz:<如何优雅地 AK NOI> 我:如何优雅地爆零 首先,按照这题总结出来的一个小套路,看到多项式与组合数结合的题,可以考虑将普通多项式转为下降幂多项式,因为下降幂和组合 ...

  3. P6672-[清华集训2016]你的生命已如风中残烛【结论】

    正题 题目链接:https://www.luogu.com.cn/problem/P6672 题目大意 长度为\(m\)的序列\(a\),有\(n\)个数字不是\(0\),其他\(m-n\)个是\(0 ...

  4. 洛谷 P2260 [清华集训2012]模积和 || bzoj2956

    https://www.lydsy.com/JudgeOnline/problem.php?id=2956 https://www.luogu.org/problemnew/show/P2260 暴力 ...

  5. 洛谷P2260 [清华集训2012]模积和(容斥+数论分块)

    题意 https://www.luogu.com.cn/problem/P2260 思路 具体思路见下图: 注意这个模数不是质数,不能用快速幂来求逆元,要用扩展gcd. 代码 #include< ...

  6. 洛谷 P4002 - [清华集训2017]生成树计数(多项式)

    题面传送门 神题. 考虑将所有连通块缩成一个点,那么所有连好边的生成树在缩点之后一定是一个 \(n\) 个点的生成树.我们记 \(d_i\) 为第 \(i\) 个连通块缩完点之后的度数 \(-1\), ...

  7. UOJ #274. 【清华集训2016】温暖会指引我们前行 [lct]

    #274. [清华集训2016]温暖会指引我们前行 题意比较巧妙 裸lct维护最大生成树 #include <iostream> #include <cstdio> #incl ...

  8. UOJ_274_[清华集训2016]温暖会指引我们前行_LCT

    UOJ_274_[清华集训2016]温暖会指引我们前行_LCT 任务描述:http://uoj.ac/problem/274 本题中的字典序不同在于空串的字典序最大. 并且题中要求排序后字典序最大. ...

  9. UOJ 275. 【清华集训2016】组合数问题

    UOJ 275. [清华集训2016]组合数问题 组合数 $C_n^m $表示的是从 \(n\) 个物品中选出 \(m\) 个物品的方案数.举个例子,从$ (1,2,3)(1,2,3)$ 三个物品中选 ...

随机推荐

  1. 脚本注入3(blind)

    布尔盲注适用于任何情况回显都不变的情况. (由此,可以看出,回显啥的其实都不重要,最重要的是判断注入点.只要找到注入点了,其他的都是浮云.) 在操作上,时间盲注还稍微简单一点:它不需要像布尔盲注那样, ...

  2. Python语法1

    变量 命名规则 变量名必须是大小写英文字母.数字或下划线 _ 的组合,不能用数字开头,并且对大小写敏感 变量赋值 同一变量可以反复赋值,而且可以是不同类型的变量 i=2; i="name&q ...

  3. 【二食堂】Beta - 项目展示

    项目展示 1. 团队介绍 二食堂很难排队 姓名 介绍 职务 刘享 热爱游戏,尤其是RPG和metrovinia类的游戏. 会C/C++, python, java. 后端 左正 一个普通的大学生,Py ...

  4. 运维常用python库&模块

    sutil:是一个跨平台库(https://github.com/giampaolo/psutil)能够实现获取系统运行的进程和系统利用率(内存,CPU,磁盘,网络等),主要用于系统监控,分析和系统资 ...

  5. mil,mm与inch之间的转换

    inch:英寸 mil:密耳 mm:毫米 cm:厘米 1mil=0.0254mm=25.4um 1mm=39.37mil 1inch=1000mil=25.4mm=2.54cm(公分) /////// ...

  6. arm开发板上找不到/dev/i2c-*设备

    最近在调试arm与外设iic通讯是,想来个投机取巧,先不写单独的驱动,直接通过iic bus设备是否可以连接到外设,然后发现在板子上找不到"/dev/i2c-n"的设备,标准的系统 ...

  7. simulate_screencap

    #!/bin/bashadb shell screencap -p /sdcard/screen.pngadb pull /sdcard/screen.png ./adb shell rm /sdca ...

  8. hdu 4771 Stealing Harry Potter's Precious (BFS+状压)

    题意: n*m的迷宫,有一些格能走("."),有一些格不能走("#").起始点为"@". 有K个物体.(K<=4),每个物体都是放在& ...

  9. Docker配置tomcat端口映射后无法访问(404)

    1.配置tomcat端口映射 2.访问测试 3.修改webapps文件,webapps.dist是所需文件 4.虚拟机中重新访问 5.在主机也能访问成功(注意路径为虚拟机IP,不是localhost)

  10. python语法与pycharm的基本使用

    内容概要 pycharm基本使用 python注释语法 变量与常量 垃圾回收机制 数据类型 1. pycharm基本使用 pycharm安装完成后首次打开要注意: 文件路径(不要选择C盘) pytho ...