容易发现对于这样抽卡或者转转盘的题目,都是先使劲随机达到一个临界值在进行定点操作。
对于这个题目,显然应该先抽卡再去买卡,因为如果抽到了已经买过的卡就会直接损失 2x 的碎片。
设 Ei 表示抽了 i 张不同的卡的期望操作次数,考虑分情况讨论随机抽一张新卡的操作次数:
- 抽到了已有的卡,概率为 ni,还需要继续抽。
- 抽到了新的卡,概率为 nn−i,操作就结束了。
那么显然有:
Ei=ni×(Ei+2x)+nn−i×(Ei−1+x)
化简之后有:
Ei−Ei−1=(n−in+1)×2x
所以我们就得到了已有 i 张后抽出一张的卡的操作的代价为 (n−in+1)×2x。
如果要新买一张卡,那么肯定后面所有的卡都要全部买,那么假设后面还有价值为 sum 的卡没有买,那么新获得一张卡的期望就是 n−isum。
因为 i=1∑nci≤104 所以,考虑直接设 fi,j 表示抽出了 i 张卡已有的价值为 j 时候的方案数。
那么显然有转移方程:
fj+1,k+ai←fj+1,k+ai+fj,k
这样转移是为了避免重复的选择一个碎片。
显然,出现一个情况 (i,j) 的概率为 (ni)fi,j。
根据期望等于概率乘以权值,答案显然为:
i=0∑n−1j=0∑smin(n−is−j,(n−in+1)×2x)×(ni)fi,j