洛谷P6151 [集训队作业2019] 青春猪头少年不会梦到兔女郎学姐

先考虑这样的一个问题:有 \(n\) 种颜色的球,每种有 \(b_i\) 个,求满足相邻不同色的排列的方案数。CF840C On the Bench

考虑容斥,枚举有多少个违反了相邻不同色的限制,违反后可以将相邻同色的球看作一个整体,枚举有 \(c_i\) 段相邻,得:

\[\large\begin{aligned} &\sum_c\left(\prod_{i=1}^n(-1)^{c_i}\binom{b_i-1}{c_i}\right)\frac{(\sum b_i-c_i )!}{\prod(b_i-c_i)!} \\ =&\sum_c\left(\prod_{i=1}^n(-1)^{b_i-c_i}\binom{b_i-1}{c_i-1}\right)\frac{(\sum c_i )!}{\prod c_i!} \\ \end{aligned} \]

\(f(a,b)\) 为将 \(a\) 个球分为 \(b\) 段后,所有方案中长度之积的和,考虑组合意义,其为 \(a+b\) 划分为 \(b\) 个正整数后,每个数 \(-1\) 的乘积之和,那么就是先在 \(a+b-1\) 个位置中插 \(b-1\) 个隔板,划分为 \(b\) 段,然后再在每一段中选一个位置来插板,也就是奇数编号的隔板为划分每个数,偶数编号的隔板为划分每一段 ,得答案为 \(\binom{a+b-1}{2b-1}\)

发现将 \(f(a,b)\) 和之前考虑的问题结合起来就是链的答案,得:

\[\large \sum_b\sum_c\left(\prod_{i=1}^n(-1)^{b_i-c_i}\binom{b_i-1}{c_i-1}f(a_i,b_i)\right)\frac{(\sum c_i )!}{\prod c_i!} \]

考虑每一种颜色的指数型生成函数:

\[\large\begin{aligned} F_i(x)&=\sum_c\frac{x^c}{c!}\sum_b(-1)^{b-c}\binom{b-1}{c-1}f(a_i,b) \\ &=\sum_c\frac{x^c}{c!}\sum_b(-1)^{b-c}\frac{(b-1)!}{(c-1)!(b-c)!}\frac{(a_i+b-1)!}{(2b-1)!(a_i-b)!} \\ &=\sum_c\frac{x^c}{c!(c-1)!}(-1)^c\sum_{b \geqslant c}^{a_i}(-1)^b\frac{(b-1)!}{(b-c)!}\frac{(a_i+b-1)!}{(2b-1)!(a_i-b)!} \\ &=\sum_c\frac{x^c}{c!(c-1)!}(-1)^c\sum_{b \geqslant 0}^{a_i-c}(-1)^{a_i-b}\frac{(a_i-b-1)!}{(a_i-b-c)!}\frac{(2a_i-b-1)!}{(2a_i-2b-1)!b!} \\ \end{aligned} \]

可以卷积计算 \(F_i(x)\),得答案为 \(\prod\limits_{i=1}^n F_i(x)\),分治处理即可。

然后考虑环的情况,在开头为 \(1\) 且结尾不为 \(1\) 的情况统计答案,得其为开头为 \(1\) 的方案数减去开头结尾都为 \(1\) 的方案数,发现确定 \(a\) 个位置为 \(1\) 就是将 \(F_1(x)\) 向左平移 \(a\) 位。

对于周期为 \(T\) 的环,其对应 \(T\) 个不同的排列,那么该环应当被计算 \(T\) 次,设 \(m=\sum a_i\) 为总长,得若一个环有 \(b\)\(1\),则其会被算 \(\frac{b}{\frac{m}{T}}\) 次,那么在 \(F_1(x)\) 中除掉 \(b\),最后对答案乘 \(m\) 即可。

posted @ 2020-10-26 22:12  lhm_liu  阅读(277)  评论(1编辑  收藏  举报