[CTS2019] 珍珠

我感觉我开始沉迷推柿子了,有趣。

一、题目

点此看题

其实求的是合法的方案数。

二、解法

\(cnt_c\) 为颜色 \(c\) 珍珠的个数,那么可以推出一个关于 \(cnt_c\) 奇偶性的柿子:

\[\sum_{c=1}^d\frac{cnt_c}{2}\geq m \]

\[\sum_{c=1}^d\frac{cnt_c-cnt_c\%2}{2}\geq m \]

\[\sum_{c=1}^dcnt_c-cnt_c\%2\geq 2m \]

\[n-\sum_{c=1}^dcnt_c\%2\geq2m \]

\[\sum_{c=1}^dcnt_c\%2\leq n-2m \]

如果 $$n-2m\geq d$$ 那么答案是 \(D^n\),如果 \(n-2m<0\) 那么答案是 \(0\)

\(odd_i\) 表示个数为奇数的颜色个数为 \(i\) 的方案数,\(f_i\) 表示钦定个数为奇数的颜色个数为 \(i\) 的方案数,那么根据二项式反演可以得到:

\[odd_i=\sum_{j\geq i}(-1)^{j-i}{j\choose i}\cdot f_j \]

\[odd_i=\frac{1}{i!}\sum_{j\geq i}\frac{(-1)^{j-i}}{(j-i)!}\cdot j!\cdot f_j \]

可以化为卷积的形式,把第一个数组的下标变成 \(n-i\) 即可,那么要在 \(n+i\) 处拿到答案。


那么 \(f\) 是不是会好算一些呢?这里可以用指数型生成函数去算 \(f\),因为对于这 \(n\) 个随机变量,是不存在所谓标号的,有的只是颜色的差别,所以可以看成可重集的排列(用数学也可以很好地说明,其实就是很多个组合数相乘,展开之后就是可重集的排列)

\(EGF\) 的卷积原理应该是去除原来的标号,再给新的标号,可重集的排列就是经典问题

奇数的生成函数是 \(\{0,1,0,1,0,1....\}\) 也就是 \(\frac{e^x+e^{-x}}{2}\),现在开始推柿子吧:

\[f_k={d\choose k}n![x^n](\frac{e^x-e^{-x}}{2})^k(e^x)^{d-k} \]

\[f_k={d\choose k}\frac{n!}{2^k}[x^n](e^x-e^{-x})^k(e^x)^{d-k} \]

用二项式定理展开,枚举 \(e^{x}\) 的选取数量 \(i\)

\[f_k={d\choose k}\frac{n!}{2^k}[x^n]\sum_{i=0}^k{k\choose i}\cdot e^{ix}\cdot (-e^x)^{k-i}\cdot e^{x(d-k)} \]

\[f_k={d\choose k}\frac{n!}{2^k}[x^n]\sum_{i=0}^k(-1)^{k-i}{k\choose i}\cdot e^{(2i-2k+d)x} \]

\[f_k={d\choose k}\frac{1}{2^k}\sum_{i=0}^k(-1)^{k-i}{k\choose i}\cdot (2i-2k+d)^n \]

翻转一下,把 \(i\) 换成 \(k-i\)

\[f_k={d\choose k}\frac{1}{2^k}\sum_{i=0}^k(-1)^i{k\choose k-i}\cdot(d-2i)^n \]

\[f_k=\frac{d!}{2^k\cdot(d-k)!}\sum_{i=0}^k\frac{(-1)^i(d-2i)^n}{i!}\cdot\frac{1}{(k-i)!} \]

然后直接用卷积求吧!时间复杂度 \(O(n\log n)\)

posted @ 2021-03-12 22:02  C202044zxy  阅读(57)  评论(0编辑  收藏  举报