[做题记录-计数] P6151 [集训队作业2019] 青春猪头少年不会梦到兔女郎学姐

Part1

看到这个题目会想起一个弱化版的问题。
\(n\)种不同的球, 每种球有\(a_i\)个, 求有多少种排列球的方式,使得相邻的球的种类不相同。
\(\sum a_i \leq 2 \times 10 ^5\)
这个问题需要考虑相邻的球构成的限制。考虑直接构造球的\(\text{EGF}\)然后进行拼接。
考虑枚举一个颜色的选择的限制个数长度构造\(\text{EGF}\)。可以如下构造。

\[F_i = \sum_{j = 1}^{a_i}\binom{a_i - 1}{j - 1}(-1) ^ {a _i - j}\frac{x^j}{j!}\]

这个式子的组合意义在于, 可以考虑从左往右考虑所有相邻的相同的点, 那么每一个相邻的位置就是一个限制。所以生成函数前面的组合数表示的意义是在这些限制里面选择\(j\)个限制打破然后构成当前的颜色段, 然后乘上容斥系数。直接把\(F_i\)做卷积即可得到答案。

Part2

现在考虑计算题目中要求的答案。此时我们仍然认为当前是在序列上计数。
然后你发现式子貌似并不能直接扩展过来。
然后再想想发现好像可以
\(f(x, y)\)表示把\(x\)个数切成\(y\)段的所有方案下的长度乘积和。
那么同样考虑构造\(\text{EGF}\)

\[F = \sum_{i = 1}^{a}f(a, i)\sum_{j = 1}^i\binom{i - 1}{j - 1}(-1)^{i - j}\frac{x^j}{j!} \]

组合意义是我们枚举这个颜色分成了多少段, 然后计数在多少种情况下这个颜色会分成\(i\)段。后面的容斥系数意义是每次枚举至多分成\(j\)段。由于统计答案是关于段数(打破限制数)的, 所以生成函数的指数与\(j\)相关。
那么直接相乘可以得到最后的多项式。
对于\(f(x, y)\)是经典的不定方程解数问题。答案是\(\binom{x + y - 1}{2y - 1}\)

Part3

考虑上环。
如果我们考虑让第一种球放在开头,且末尾不是第一种球,那么这个环的权值可以对应到序列上。
那么可以用开头是第一种球的方案数减去开头和结尾都是的方案数。这个方案数可以通过向下平移颜色多项式实现。意义就是强行让多项式在选某个的时候自动带上钦定的部分。由于环循环是可贡献的, 最后答案需要乘一个\(\sum{a_i}\)。但是你发现这样的话每个第一种球的段都会计算一次答案, 所以在第一种颜色的球的生成函数里面除去一个\(\frac{1}{j}\)即可。
实现平移多项式的时候一定要注意不要把\(EGF\)的系数一起平移了!调了114514年对着题解看了114514年!

posted @ 2021-09-21 21:41  HN-wrp  阅读(55)  评论(0编辑  收藏  举报