我感觉我开始沉迷推柿子了,有趣。
一、题目
其实求的是合法的方案数。
二、解法
设 (cnt_c) 为颜色 (c) 珍珠的个数,那么可以推出一个关于 (cnt_c) 奇偶性的柿子:
[sum_{c=1}^dfrac{cnt_c}{2}geq m
]
[sum_{c=1}^dfrac{cnt_c-cnt_c\%2}{2}geq m
]
[sum_{c=1}^dcnt_c-cnt_c\%2geq 2m
]
[n-sum_{c=1}^dcnt_c\%2geq2m
]
[sum_{c=1}^dcnt_c\%2leq n-2m
]
如果 $$n-2mgeq d$$ 那么答案是 (D^n),如果 (n-2m<0) 那么答案是 (0)
设 (odd_i) 表示个数为奇数的颜色个数为 (i) 的方案数,(f_i) 表示钦定个数为奇数的颜色个数为 (i) 的方案数,那么根据二项式反演可以得到:
[odd_i=sum_{jgeq i}(-1)^{j-i}{jchoose i}cdot f_j
]
[odd_i=frac{1}{i!}sum_{jgeq 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={dchoose k}n![x^n](frac{e^x-e^{-x}}{2})^k(e^x)^{d-k}
]
[f_k={dchoose k}frac{n!}{2^k}[x^n](e^x-e^{-x})^k(e^x)^{d-k}
]
用二项式定理展开,枚举 (e^{x}) 的选取数量 (i):
[f_k={dchoose k}frac{n!}{2^k}[x^n]sum_{i=0}^k{kchoose i}cdot e^{ix}cdot (-e^x)^{k-i}cdot e^{x(d-k)}
]
[f_k={dchoose k}frac{n!}{2^k}[x^n]sum_{i=0}^k(-1)^{k-i}{kchoose i}cdot e^{(2i-2k+d)x}
]
[f_k={dchoose k}frac{1}{2^k}sum_{i=0}^k(-1)^{k-i}{kchoose i}cdot (2i-2k+d)^n
]
翻转一下,把 (i) 换成 (k-i):
[f_k={dchoose k}frac{1}{2^k}sum_{i=0}^k(-1)^i{kchoose k-i}cdot(d-2i)^n
]
[f_k=frac{d!}{2^kcdot(d-k)!}sum_{i=0}^kfrac{(-1)^i(d-2i)^n}{i!}cdotfrac{1}{(k-i)!}
]
然后直接用卷积求吧!时间复杂度 (O(nlog n))