【ZJOI2020】抽卡
题目描述
\(\quad\) 传送门
题解
\(\quad\) 开始之前,先给出两个定义。
\(\quad\) 合法的定义:存在标号连续的 \(k\) 张牌。
\(\quad\) 不合法的定义:不存在标号连续的 \(k\) 张牌。
非满分方法一 : 期望得分 \(70\) 分
\(\quad\) \(\text{Min-Max}\) 容斥,都快烂大街了。这里就不讲了。
非满分方法二 : 期望得分 \(90\) 分
\(\quad\) 我们设 \(f_{i}\) 表示抽了 \(i\) 轮不合法的方案数目。
\(\quad\) 可以得到:
\(\quad\) 考虑抽了 \(i\) 轮以后有 \(R\) 张卡,那么可以得到:
\(\quad\) 其中 \(\mathcal T(i,R)\) 代表抽了 \(i\) 轮抽到这 \(R\) 张卡的方案数目,\(\mathcal P(R)\) 代表在 \(m\) 张卡中抽 \(R\) 张卡不合法的方案数目。
\(\mathcal T(i,R)\) 的答案显然,即:
\(\quad\) 带入暴力求和可以发现最后是一个 \(\text{NTT}\) 可以处理的形式,设那个部分 \(\text{NTT}\) 的结果为 \(\mathcal H(i)\),最后的答案为:
\(\quad\) 问题在于怎么求解 \(\mathcal P\) ,我们把长度为 \(m\) 的段先成一段一段连续的部分,最后 \(\text{NTT}\) 合并即可。
\(\quad\) 我们不妨设当前段的长度为 \(n\)。考虑 \(\mathcal P(i)\) 的 组合意义。就是把 \(i\) 个无标号的小球放入 \(n-i+1\) 有标号的盒子当中的方案数目。
\(\quad\) 直接暴力计算,可以得到这个算法的瓶颈复杂度为 \(\mathcal O(\dfrac{m^2}{k}+m\log_2^2m)\)。
满分做法一
\(\quad\) 我们尝试考虑 一个连续段不合法方案 的生成函数:
\(\quad\) 上面的式子的含义解释如下:我们选出一段卡牌,然后强制后一个不选,但是强制选出的卡牌又不能超过 \(k\) 个,然后我们枚举有 \(r\) 张卡牌强制不选,那么前面 \([x^{n-r+1}]\) 的含义就是选出 \(n-r+1\) 张卡牌不合法的方案数。
\(\quad\) 我们转换一下上面的式子:
特性它
\(\quad\) 我们令:
\(\quad\) 我们可以得到就是要求这个:
\(\quad\) 我们考虑二元生成函数:
\(\quad\) 我们提取 \(H(u,x)\) 的 \(n+1\) 项系数即可。 那么这么做为什么是对的呢?我们可以这么看:
\(\quad\) 我们发现,因为 \(G\) 的常数项系数为 \(0\) ,所以当 \(r \ge n+1\) 的时候,\([x^{n+1}](G(x))^r = 0\),所以我们这么做是对的。
\(\quad\) 那么虽然我们知道要提取系数,但是我们真的不知道要怎么处理。其实这个式子已经在暗示我们用拉格朗日反演了,因为它只要求某一项的系数。
\(\quad\) 所以我们可以使用拓展拉格朗日反演,我们可以得到:
\(\quad\) 其中 \(G^{-1}(x)\) 是 \(G(x)\) 的复合逆,我们可以用 \(O(n\log_2n)\) 的\(\text{Newton}\) 迭代解出。
\(\quad\) 我们尝试把中间带 \(u\)这个打开,那么我们可以得到:
\(\quad\) 所以,我们现在直接比对两边的 \(u\) 的系数即可得到:\((G(x))^r\)
\(\quad\) 特别注意,我们这里 \((G(x))^r\) 的意义为:选出 \(n-r+1\) 张卡牌不合法的方案数。所以最后一定要反转系数!
满分做法二
\(\quad\) 我不会这个奇怪的组合意义...如果未来是水平到了这个地步我会来填坑的...
\(\quad\) 答案的生成函数为:
\(\quad\) 可以直接采用分治 \(\text{NTT}\) 解决。
满分做法三
\(\quad\) 深入分析 \(\text{Min-Max}\) 容斥,可以将其复杂度优化至 \(\mathcal O(\dfrac{m^2}{k^2})\) 。然后可以发掘 \(\mathcal H\) 的一个 \(\mathcal O(m\log_2^2m)\) 的做法,可以避免牛顿迭代。但是我不会,以后有空补上...

浙公网安备 33010602011771号