题目描述
(quad) 传送门
题解
(quad) 开始之前,先给出两个定义。
(quad) 合法的定义:存在标号连续的 (k) 张牌。
(quad) 不合法的定义:不存在标号连续的 (k) 张牌。
非满分方法一 : 期望得分 (70) 分
(quad) ( ext{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) 带入暴力求和可以发现最后是一个 ( ext{NTT}) 可以处理的形式,设那个部分 ( ext{NTT}) 的结果为 (mathcal H(i)),最后的答案为:
(quad) 问题在于怎么求解 (mathcal P) ,我们把长度为 (m) 的段先成一段一段连续的部分,最后 ( ext{NTT}) 合并即可。
(quad) 我们不妨设当前段的长度为 (n)。考虑 (mathcal P(i)) 的 组合意义。就是把 (i) 个无标号的小球放入 (n-i+1) 有标号的盒子当中的方案数目。
(quad) 直接暴力计算,可以得到这个算法的瓶颈复杂度为 (mathcal O(dfrac{m^2}{k}+mlog_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(nlog_2n)) 的( ext{Newton}) 迭代解出。
(quad) 我们尝试把中间带 (u)这个打开,那么我们可以得到:
(quad) 所以,我们现在直接比对两边的 (u) 的系数即可得到:((G(x))^r)
(quad) 特别注意,我们这里 ((G(x))^r) 的意义为:选出 (n-r+1) 张卡牌不合法的方案数。所以最后一定要反转系数!
满分做法二
(quad) 我不会这个奇怪的组合意义...如果未来是水平到了这个地步我会来填坑的...
(quad) 答案的生成函数为:
(quad) 可以直接采用分治 ( ext{NTT}) 解决。
满分做法三
(quad) 深入分析 ( ext{Min-Max}) 容斥,可以将其复杂度优化至 (mathcal O(dfrac{m^2}{k^2})) 。然后可以发掘 (mathcal H) 的一个 (mathcal O(mlog_2^2m)) 的做法,可以避免牛顿迭代。但是我不会,以后有空补上...