码迷,mamicode.com
首页 > 其他好文 > 详细

[题解] LuoguP5401 [CTS2019]珍珠

时间:2020-06-26 14:48:38      阅读:38      评论:0      收藏:0      [点我收藏+]

标签:阶乘   组合   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\)

根据二项式反演

\[\begin{aligned} f_k &= \sum\limits_{i=k}^D \binom{i}{k} (-1)^{i-k} g_i \\ &= \frac{1}{k!}\sum\limits_{i=k}^D \frac{i!}{(i-k)!} (-1)^{i-k} g_i \\&= \frac{1}{k!} \sum\limits_{i=0}^{D - k} \frac{(-1)^i}{i!} g_{i+k}(i+k)! \\&= \frac{1}{k!} \sum\limits_{i=0}^{D - k} A_{D-k-i} B_i\end{aligned} \]

其中

\[A_i = (D-i)! g_{D-i} \]

\[B_i = \frac{(-1)^i}{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\)那么大咋阶乘呢......继续往下推

二项式定理暴力展开后面那坨

\[\begin{aligned}&\quad (e^{x} - e^{-x})^ke^{x(D-k)} \\&= \sum\limits_{i=0}^k \binom{k}{i} (-1)^{k-i} e^{xi}e^{-x(k-i)}e^{x(D-k)} \\&= \sum\limits_{i=0}^k \binom{k}{i} (-1)^{k-i} e^{(2i-2k+D)x} \\&= \sum\limits_{i=0}^k \binom{k}{i} (-1)^{k-i} \sum\limits_{j=0}^{\infty} \frac{(2(i-k)+D)^j}{j!} x^j \\&= \sum\limits_{j=0}^{\infty} \frac{x^j}{j!} \sum\limits_{i=0}^k \binom{k}{i} (-1)^{k-i} (D-2(k-i))^j \\&= \sum\limits_{j=0}^{\infty} x^j \frac{k!}{j!} \sum\limits_{i=0}^k \frac{(-1)^{k-i}(D-2(k-i))^j}{i!(k-i)!}\end{aligned} \]

于是

\[[x^n]\left[ \left(e^x - e^{-x}\right)^ke^{x(D-k)} \right] = \frac{k!}{n!} \sum\limits_{i=0}^k \frac{(-1)^{k-i}(D-2(k-i))^n}{i!(k-i)!} \]

乘上去,\(n!\)果不其然的蒸发了

\[X_k = \frac{k!}{2^k}\sum\limits_{i=0}^k \frac{(-1)^{k-i}(D-2(k-i))^n}{(k-i)!} \times \frac{1}{i!} \]

我们甚至也把\(k!\)搞掉了尽管没什么用

\[g_k = \frac{D!}{(D-k)!2^k}\sum\limits_{i=0}^k \frac{(-1)^{k-i}(D-2(k-i))^n}{(k-i)!} \times \frac{1}{i!} \]

标准的卷积(

卷出\(g\)再卷到\(f\)就好了

注意特判一下\(n - 2m \ge D\)时答案为\(D^n\)\(n - 2m < 0\)时答案为\(0\)

代码: https://paste.ubuntu.com/p/DPtMCrGR6P/

copy了之前多项式的板子,没删干净,显得丑陋而冗长 /kk

[题解] LuoguP5401 [CTS2019]珍珠

标签:阶乘   组合   mit   注意   表示   想法   函数   lan   方案   

原文地址:https://www.cnblogs.com/wxq1229/p/13194755.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!