CTS2019 / CTSC2019」珍珠

题意

有n个珍珠,每个珍珠可以取1~d中的一种颜色,求可以配成不少于m对的方案数(颜色相同的算一对)。
n<=1e9,d<=1e5

题解

由于n比较大,故从颜色上考虑。
容易发现,要求的就是出现次数为奇数的颜色种数<=n-m*2的方案数,考虑枚举出现次数为奇数的颜色种数,计算方案数时,因为要考虑顺序,于是将每种颜色看成一个指数型生成函数。
但要强制每个为奇数/偶数,列出来的式子过于复杂(只有某X姓神犇能化下去),于是考虑容斥,只限制奇数的颜色,这样能得到一个较为简单的式子: f [ k ] ( 至 少 k 个 颜 色 为 奇 数 的 方 案 数 ) = C ( d , k ) ∗ ( e x − e − x 2 ) k ∗ e d − k [ x n ] ∗ k ! f[k](至少k个颜色为奇数的方案数)=C(d,k)*(\frac{e^{x}-e^{-x}}{2})^{k}*e^{d-k}[x^{n}]*k! f[k](k)=C(d,k)2exexkedk[xn]k!
对它稍加化简,可以得到: f [ k ] = n ! ∗ C ( d , k ) 2 k ∗ ∑ i = 0 k C ( k , i ) ∗ ( − 1 ) i ∗ e ( d − i ∗ 2 ) x [ x n ] f[k]=\frac{n!*C(d,k)}{2^{k}} *\sum_{i=0}^{k}C(k,i)*(-1)^{i}*e^{(d-i*2)x}[x^{n}] f[k]=2kn!C(d,k)i=0kC(k,i)(1)ie(di2)x[xn]
对于没有生成函数知识的我,已经不做会了。对于 e ( d − i ∗ 2 ) x e^{(d-i*2)x} e(di2)x要求第n项系数,其实就是把 ( d − i ∗ 2 ) x (d-i*2)x (di2)x带入x,于是得到一个卷积的形式,就可ntt解决。
求出f[k]后,用二项式反演容斥即可得到恰好k个颜色为奇数的方案数,这个过程也是一个卷积的形式,ntt即可。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值