容易发现对于这样抽卡或者转转盘的题目,都是先使劲随机达到一个临界值在进行定点操作。

对于这个题目,显然应该先抽卡再去买卡,因为如果抽到了已经买过的卡就会直接损失 x2\dfrac{x}{2} 的碎片。

EiE_i 表示抽了 ii 张不同的卡的期望操作次数,考虑分情况讨论随机抽一张新卡的操作次数:

  • 抽到了已有的卡,概率为 in\dfrac{i}{n},还需要继续抽。
  • 抽到了新的卡,概率为 nin\dfrac{n-i}{n},操作就结束了。

那么显然有:

Ei=in×(Ei+x2)+nin×(Ei1+x)E_i=\dfrac{i}{n}\times (E_i+\dfrac{x}{2})+\dfrac{n-i}{n}\times (E_{i-1}+x)

化简之后有:

EiEi1=(nni+1)×x2E_{i}-E_{i-1}=(\dfrac{n}{n-i}+1)\times\dfrac{x}{2}

所以我们就得到了已有 ii 张后抽出一张的卡的操作的代价为 (nni+1)×x2(\dfrac{n}{n-i}+1)\times\dfrac{x}{2}

如果要新买一张卡,那么肯定后面所有的卡都要全部买,那么假设后面还有价值为 sumsum 的卡没有买,那么新获得一张卡的期望就是 sumni\dfrac{sum}{n-i}

因为 i=1nci104\sum\limits_{i=1}^n c_i\le 10^4 所以,考虑直接设 fi,jf_{i,j} 表示抽出了 ii 张卡已有的价值为 jj 时候的方案数。

那么显然有转移方程:

fj+1,k+aifj+1,k+ai+fj,kf_{j+1,k+a_i}\gets f_{j+1,k+a_i}+f_{j,k}

这样转移是为了避免重复的选择一个碎片。

显然,出现一个情况 (i,j)(i,j) 的概率为 fi,j(in)\dfrac{f_{i,j}}{i\choose n}

根据期望等于概率乘以权值,答案显然为:

i=0n1j=0smin(sjni,(nni+1)×x2)×fi,j(in)\sum\limits_{i=0}^{n-1}\sum\limits_{j=0}^{s}\min(\dfrac{s-j}{n-i},(\dfrac{n}{n-i}+1)\times\dfrac{x}{2})\times \dfrac{f_{i,j}}{i\choose n}