【CTS2019】珍珠(计数,容斥,NTT)

20 篇文章 0 订阅
5 篇文章 0 订阅

题意:称一个长度为 n n n,值域为 [ 1 , D ] [1,D] [1,D] 整数序列为合法序列,当且仅当序列中能选出 m m m 对数相等。问合法序列数。

1 ≤ D ≤ 1 0 5 , 1 ≤ n , m ≤ 1 0 9 1\leq D\leq 10^5,1\leq n,m\leq 10^9 1D105,1n,m109

题解:

c i c_i ci 表示数 i i i 在序列中的出现次数,那么限制转化成:
∑ i = 1 D ⌊ c i 2 ⌋ ≥ m \sum_{i=1}^D \lfloor\frac{c_i}{2}\rfloor\geq m i=1D2cim
⌊ c i 2 ⌋ \lfloor\dfrac{c_i}{2}\rfloor 2ci 转化为 c i − c i   m o d   2 2 \dfrac{c_i-c_i\bmod 2}{2} 2cicimod2,这样做的好处是 ∑ c i \sum c_i ci 是固定的,于是限制就能转化成:
∑ i = 1 D c i   m o d   2 ≤ n − 2 m \sum_{i=1}^D c_i\bmod 2\leq n-2m i=1Dcimod2n2m
左式的取值范围是 [ 0 , D ] [0,D] [0,D],所以若右式 n − 2 m n-2m n2m 不在这个范围的话,可以直接特判掉,现在只考虑 n − 2 m ∈ [ 0 , D ] n-2m\in [0,D] n2m[0,D] 的情况。

现在我们只关心 c i c_i ci 的奇偶性。

f k f_k fk 表示钦定 k k k c i c_i ci 为奇数的方案数,求出 f f f 之后恰好为 k k k 个的方案数可以卷出来。

对于一种 c i c_i ci,强制钦定它为奇数的 EGF 为 { 0 , 1 , 0 , 1 , ⋯   } = e x − e − x 2 \{0,1,0,1,\cdots\}=\dfrac{e^x-e^{-x}}{2} {0,1,0,1,}=2exex,否则任选的 EGF 为 e x e^x ex

于是:
f k = ( D k ) [ x n ] ( e x − e − x 2 ) k ( e x ) D − k = ( D k ) 1 2 k [ x n ] ∑ i = 0 k ( k i ) ( − 1 ) k − i e ( D − 2 k + 2 i ) x = ( D k ) 1 2 k ∑ i = 0 k ( k i ) ( − 1 ) k − i ( D − 2 k + 2 i ) n n ! \begin{aligned} f_k&=\binom{D}{k}[x^n]\left(\dfrac{e^x-e^{-x}}{2}\right)^k\left(e^x\right)^{D-k}\\ &=\binom{D}{k}\frac{1}{2^k}[x^n]\sum_{i=0}^k\binom{k}{i}(-1)^{k-i}e^{(D-2k+2i)x}\\ &=\binom{D}{k}\frac{1}{2^k}\sum_{i=0}^k\binom{k}{i}(-1)^{k-i}\frac{(D-2k+2i)^n}{n!}\\ \end{aligned} fk=(kD)[xn](2exex)k(ex)Dk=(kD)2k1[xn]i=0k(ik)(1)kie(D2k+2i)x=(kD)2k1i=0k(ik)(1)kin!(D2k+2i)n
卷一下即可。

代码咕了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值