CF1278F Cards

题目传送门

分析:
太!棒!了!学!到!虚!脱!

这里给出(O(K^2),O(KlogK),O(K))三种解法

(O(K^2))解法
考虑(K)的意义
相当于有一个长度为K的序列,每一个位置是一个独立的游戏,我们假设有(c)次游戏抽出了Joker
抽出Joker的轮次序列为({C_1,C_2...C_c})
序列每一位选择一个轮次,于是便会出现(c^K)个序列
对于一个序列出现的轮次,我们要钦定这几轮一定抽出Joker,对于其他没有进入序列的轮次,我们并不关心
于是一个长度为(K),其中出现了(p)种轮次,那么这个序列出现的概率便是(frac{1}{m^p})
我们设(f[K][p])表示长度为(K),其中出现了(p)种轮次的序列总数
进行(dp)

[dp[i][j]=dp[i−1][j]∗j+dp[i−1][j−1]∗(n−j+1) ]

最后期望=概率*方案
代码很短

后面两个解法先放上这个博客
清晰美妙的式子推导,OrzOrzOrz

主要使用这两个推导公式:

[n^m=sum_{k=0}^{m}egin{Bmatrix}m\kend{Bmatrix}inom{n}{k}k!=sum_{k=0}^{m}egin{Bmatrix}m\kend{Bmatrix}n^{underline k} ]

[m^{underline k}=egin{Bmatrix}m\kend{Bmatrix}k!=sum_{i=0}^{k}(-1)^{k-i}inom{k}{i}i^m ]

(O(KlogK))的解法,按照博客推到这个式子

[sum_{i=0}^{k}egin{Bmatrix}k\iend{Bmatrix}n^{underline i}p^{i} ]

这里按照上面第二个式子反演,使用NTT即可(O(KlogK))解决

(O(k))解法,将反演式子暴力带入答案式子

[sum_{i=0}^{k}i^kinom{n}{i}p^isum_{j=0}^{k-i}(-1)^jinom{n-i}{j}p^j ]

我们令(f(i)=sum_{j=0}^{k-i}(-1)^jinom{n-i}{j}p^j)
这里可以进行差分,暴力做减法合并和式就可以,可以得出递推式

[f(i)=(-p)^{k-i}inom{n-i-1}{k-i}+(1-p)f(i+1) ]

这个(O(k))递推,然后(O(k))求答案

留下了没有数理基础的泪水。。。

原文地址:https://www.cnblogs.com/Darknesses/p/13018917.html