Atcoder abc231
https://atcoder.jp/contests/abc231/tasks
G - Balls in Boxes
n个盒子, 初始第i个盒子有ai个球
k次操作
每次 等概率选一个盒子, 增加1个球
分数 = 最终每个盒子的球的个数之乘积
求分数期望 mod 998244353
范围
n 1000
k 1e9
ai [0, 1e9]
2s
1024 mb
我的思路
感觉上可以 做n和n-1的关系, 然后直接算频次, 最后除总次数 转成概率
F(n,k) = 前n个所有方案的乘积和, Ans = F(n,k) / n^k
对于最后一个盒子, 选择了j次, 对应的方案乘积和为 C(k,j) * F(n-1,k-j) * (a[n]+j)
F(n,k) = sum (a[n]+j) * F(n-1,k-j) * C(k,j), j=0..k
这里n虽然小, 但是k很大, 上面这个显然TLE, 如果能搞到n^2 左右的就好了
C(k,j) 的部分拆出来 分配给F的分母可以简化,但是依然没有去掉k的维度