[BZOJ 4332] [JSOI2012]分零食(DP+FFT)
[BZOJ 4332] [JSOI2012]分零食(DP+FFT) 题面 同学们依次排成了一列,其中有A位小朋友,有三个共同的欢乐系数O,S和U。如果有一位小朋友得到了x个糖果,那么她的欢乐程度就是 \(f(x)=Ox^2+Sx+U\) 现在校长开始分糖果了,一共有M个糖果。有些小朋友可能得不到糖果, 对于那些得不到糖果的小朋友来说,欢乐程度就是1 。如果一位小朋友得不到糖果,那么在她身后的小朋友们也都得不到糖果。(即这一列得不到糖果的小朋友一定是最后的连续若干位) 所有分糖果的方案都是等概率的。现在问题是:期望情况下,所有小朋友的欢乐程度的乘积是多少?呆呆同学很快就有了一个思路,只要知道总的方案个数T和所有方案下欢乐程度乘积的总和S,就可以得到答案Ans=S/T。现在他已经求出来了T的答案,但是S怎么求呢?他就不知道了。你能告诉他么? 因为答案很大,你只需要告诉他S对P取模后的结果。 分析 题面osu好评 设 \(dp[i][j]\) 表示i个人里分j个零食得到的答案 那么 \[dp[i][j]=\sum_{k=0}^{j} dp[i-1][j-k] f(j)\] 暴力递推是 \(O(nm^2)\) 的,我们发现后面的式子是一个卷积的形式,即 \(dp_i=dp_{i-1}*f\) 由于卷积满足结合律, \(dp_i=dp_0 * f^i=1*f^i=f^i\)