题目:
有 m 张牌,其中有一张是王牌。将这些牌均匀随机打乱 n 次,设有 x 次第一张为王牌,求 xk 的期望值。
答案对 998244353 取模。
原题 k≤5000,加强版 k≤107。
题解:
被 dp 虐惨了过来愉悦身心了属于是。
设 p=1m,q=1−p。
显然答案为:
ans=n∑i=1(ni)piqn−iik=n∑i=0(ni)piqn−ii∑j=0{kj}(ij)j!=n∑j=0j!{kj}n∑i=j(ni)(ij)piqn−i=n∑j=0j!{kj}n∑i=j(nj)(n−ji−j)piqn−i=n∑j=0j!{kj}(nj)n−j∑i=0(n−ji)pi+jqn−i−j=n∑j=0j!{kj}(nj)pjn−j∑i=0(n−ji)piq(p−j)−i=n∑j=0j!{kj}(nj)pj(p+q)n−j=k∑j=0j!pj(nj){kj}
如果是原题的话,现在使用斯特林数的朴素 O(k2) 递推即可通过。
或者使用预处理行/NTT 的方式 O(klogk)。
下面是加强版:
然后考虑化解开斯特林数:
ans=k∑j=0j!pj(nj)1j!j∑i=0(ji)(−1)j−iik=k∑i=0ikk∑j=i(nj)(ji)pj(−1)j−i=k∑i=0(−1)kik(ni)n∑j=i(n−ij−i)(−p)j=k∑i=0(−1)kik(ni)k−i∑j=0(n−ij)(−p)j+i=k∑i=0piik(ni)k−i∑j=0(n−ij)(−p)j
设 f(i)=k−i∑j=0(n−ij)(−p)j,那么原式变成 O(k) 递推的式子:
ans=k∑i=0piik(ni)f(i)
考虑求出 f(i),显然 f(k)=1,那么我们考虑逆推。
f(i)=k−i∑j=0(n−ij)(−p)j=k−i∑j=0((n−(i+1)j)+(n−i−1j−1))(−p)j=k−i∑j=0(n−(i+1)j)(−p)j+k−i∑j=0(n−i−1j−1)(−p)j=f(i+1)+(n−i−1k−i)(−p)k−i+(−p)k−(i+1)∑j=0(n−(i+1)j)(−p)j=q×f(i+1)+(n−i−1k−i)(−p)k−i
筛完后直接递推。
时间复杂度 O(k)。
本文作者:trsins
本文链接:https://www.cnblogs.com/trsins/p/15815372.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步