题意
有\(n\)种颜色的球,第i种有\(a_i\)个。设\(m=\sum a_i\)。你要把这\(m\)个小球排成一排。有\(q\)个询问,每次给你一个\(x\),问你有多少种方案使得相邻的小球同色的对数为\(x\)。\(n\leq 10000,m\leq 200000\)
做法
一脸的容斥对吧
先不考虑严格的同色,对于第\(i\)种颜色,分为\(b_i\)块,单就已经分好的情况,有:\[\frac{(\sum b_i)!}{\prod (b_i!)}\]
然后来做分块的过程,\(f_{i,j}\)表示前\(i\)中颜色,分成\(j\)块,然后把\(\frac{1}{\prod(b_i!)}\)也顺便统计:\[f_{i,j}=\sum\limits_{k=1}^j f_{i-1,j-k}{a_i-1\choose k-1}\frac{1}{k!}\]
这个可以分治fft做
然后再乘上本来上面那一坨,记\(g_i=f_{n,i}\times i!\)
然后容斥一下\(ans_i=\sum\limits_{j=1}^i (-1)^{i-j}g_j{m-j\choose i-j}\),这个画下图就好了,不知道为啥要归纳
这里的\(ans_i\)指严格分\(i\)块的答案