2021 集训队作业 #123

\(\color{red}{\rm Gem ~Island(ED)}(5/2)\)

初始每个人有一颗宝石。

然后执行 \(d\) 天:

  • 每天等概率随机的选择一个宝石,然后让其分裂成两个宝石。

\(d\) 天后,拥有宝石数前 \(r\) 多的人拥有宝石的数量和的期望。

\(n,d,r\le 500\),答案精确到 \(10^{-6}\)

Solution

由于只需要计算期望和,那么可以计算排名为 \(i\) 的人拥有的宝石的期望,然后求和。

这样我们需要计算的即为:

\[E(\max(S)_k) \]

根据 \(\min-\max\) 容斥,我们有:

\[E(\max(S)_k)=\sum_{T\subseteq S,T\ne \varnothing} \binom{|T|-1}{k-1}(-1)^{|T|-k}E(\min(T)) \]

然后由于元素均为相同的,不可区分的,只需要考虑大小为 \(i\) 的集合的最小值的期望。设其为 \(f_i\)

这样答案可以写为:

\[\sum_{i=k}^n \binom{n}{i}\binom{i-1}{k-1}(-1)^{i-k}f_i \]

\[\sum_{i=k}^n \frac{k}{i}\binom{n}{k}\binom{n-k}{i-k}(-1)^{i-k}f_i \]

\[\binom{n}{k}\sum_{j=0}^{n-k} \frac{k}{j+k}\binom{n-k}{j}(-1)^{j}f_{k+j} \]

现在考虑我们确定了每个人的被操作次数 \(c_{1\sim n}\),那么得到这件事发生的概率:

\[\frac{d!}{\prod c_i!}\times \frac{\prod c_i!}{(n+d-1)^{\underline{d}}} \]

即:

\[\frac{d!}{(n+d-1)^{\underline{d}}} \]

于是每种分配 \(c_i\) 的方案发生的概率都是相同的!

现在考虑计算 \(i\) 个元素情况下的最小值,实际上可以直接使用 dp 来计算此期望,设 \(f_{i,j,k}\) 表示当前 \(c\) 的和为 \(j\),最小值为 \(k\),有 \(i\) 个数的方案数,转移的时候限制 \(k\le j/i\) 即可,状态数是 \(nd\log n\) ,转移复杂度为 \(\mathcal O(n^2d\log n)\)

此时外部元素分配 \(c\) 的方案对我们没有影响,这个部分暴力计算即可(他们对于答案的贡献为 \((\frac{1}{1-x})^{n-i}[x^d]\)(也可以使用 dp 来计算)。最后乘以 \(p=\frac{d!}{(n+d-1)^{\underline{d}}}\)

得到 \(f_i\) 后,计算答案是 easy 的。只是组合数有点过于庞大,希望 long double 可以撑住。

然后被卡精度了。。。。

卡精度了...卡精度了...

我现在最讨厌出题人搞计数题不取模了,妹妹极了。

尝试给出一个其他的做法...

仍然基于之前的做法,每种分配 \(c\) 的方案发生的概率是相同的。

于是问题可以等价于求给 \(n\) 个变量确定一组 \(c_i\) 使得和为 \(K\),求排名前 \(r\) 的元素和的期望。

然后可以考虑通过这种方式来规定前 \(r\) 大的元素具体为谁:

\(f(n,d)\)\(g(n,d)\) 表示给 \(n\) 个人分配宝石的方案数。

那么对于 \(f(n,d)\) 有:

\[f(n,d)=\sum_k \binom{n}{k}f(k,d-k) \]

即先给 \(k\) 个分一个,然后再递归分。

对于 \(g(n,d)\) 就有:

\[g(n,d)=\sum_{k}\binom{n}{k}(g(k,d-k)+\min(r,k)\cdot f(k,d-k)) \]

后半项表示考虑当前这一位被取走的元素的贡献,显然这样是对的(因为前 \(r\) 大的只能在这递归的元素中取到)。

然后这样没有考虑初始的宝石,所以答案要加 \(r\),复杂度 \(\mathcal O(n^3)\)(默认 \(n,d\) 同级别)

不是很懂为啥这样就没有精度问题...精度问题是乱算么。。。

posted @ 2020-10-14 22:58  Soulist  阅读(197)  评论(0)    收藏  举报