标签:阶乘 组合 mit 注意 表示 想法 函数 lan 方案
https://www.luogu.com.cn/problem/P5401
对于一个合法的方案,令\(c_i\)表示颜色\(i\)出现的次数则有
\(\sum\limits_{i=1}^D \lfloor c_i / 2 \rfloor \ge m\)
\(\sum\limits_{i=1}^{D} (c_i - c_i \bmod 2) / 2 \ge m\)
最后可以得到
\(n - \sum\limits_{i=1}^D c_i \bmod 2 \ge 2m\)
即 \(\sum\limits_{i=1}^D c_i \bmod 2 \le n - 2m\)
枚举左边的值,累加答案。
令\(f_k\)表示\(\sum\limits_{i=1}^D c_i \bmod 2 = k\)的方案数
恰好等于\(k\),一个套路的想法:设\(g_k\)表示钦定\(k\)个\(c \bmod 2 = 1\)后,其余随意的方案数
枚举最后有\(i\)个\(c\)为奇数,由于有之前的钦定,这些方案会被重复计数\(\binom{i}{k}\)次
所以\(g_k = \sum\limits_{i=k}^{D} \binom{i}{k} f_i\)
根据二项式反演
其中
算出\(g\)过后卷积就好了。
问题变为如何算\(g\)
先是\(g_k = \binom{D}{k} X_k\)
\(X_k\)即为\(c_1 \cdots c_k\)为奇数,\(c_{k+1}...c_{D}\)随意的方案数。
注意到\(n\)个变量有标号,最后将两部分合并乘起来的时候会有一个组合数。
构造\(c_1,c_2,\cdots ,c_k\)的EGF,即\(\langle0,1,0,1,\cdots\rangle\)这个序列的的指数级生成函数,为\(\frac{e^x - e^{-x}}{2}\),那么这一部分的EGF即为\(\left(\frac{e^{x} - e^{-x}}{2}\right)^k\)
后\(D-k\)个\(c\)的EGF就是\(e^{x(D-k)}\)
那么
\(X_k = n![x^n]\left[ \left( \frac{e^x-e^{-x}}{2}\right)^k e^{x(D-k)} \right]=\frac{n!}{2^k}[x^n]\left[ \left( e^x-e^{-x}\right)^k e^{x(D-k)} \right]\)
\(n\)那么大咋阶乘呢......继续往下推
二项式定理暴力展开后面那坨
于是
乘上去,\(n!\)果不其然的蒸发了
我们甚至也把\(k!\)搞掉了尽管没什么用
标准的卷积(
卷出\(g\)再卷到\(f\)就好了
注意特判一下\(n - 2m \ge D\)时答案为\(D^n\),\(n - 2m < 0\)时答案为\(0\)。
代码: https://paste.ubuntu.com/p/DPtMCrGR6P/
copy了之前多项式的板子,没删干净,显得丑陋而冗长 /kk
标签:阶乘 组合 mit 注意 表示 想法 函数 lan 方案
原文地址:https://www.cnblogs.com/wxq1229/p/13194755.html