来自2016集训队作业。
题意:有1..K共K个数,选n次,求
令xi,j表示在第i轮里数
考虑这个式子完全展开后的形态,如果某个项里存在同一轮的两个不同数的变量,那么这个项的贡献显然是0。每个变量为1的概率是
设fi,j表示只含前i个数的变量,这个单项式里有
因为我们每次只会加F个变量, 所以最后总共也只有
最后答案还要算回选的变量的顺序,所以答案是
∑k=LLFnk−KkfL,k
到这里的时间复杂度是T(L)=T(L/2)+O(LFlog(LF))=O(LFlog(LF)logL)。
然而仔细观察答案的式子里有nk−这一项,当k≥2003时必然有模2003为0。所以我们可以只用1...2003的项,这样直接暴力卷积就比FFT快了。