返回信息流假定桌子上从左到右排列着n个盒子,第i个盒子里装着i颗糖。
小明每次等概随机选择桌上的一个盒子并从里取一块糖,如果盒子空了就扔掉该盒子。
重复拿糖的过程,直到桌上没有盒子为止。
求第n号盒子最后被扔掉的概率。
比如,
P(n=1) = 1.0
P(n=2) = 0.75
...
用了递归的方法并维护了各种的情况下的概率分布以简化运算,发现效率仍然堪忧。
各位怎么看?
这是一条镜像帖。来源:北邮人论坛 / acm-icpc / #95701同步于 2018/4/20
该镜像源已超过 30 天没有更新,可能在源站已被删除。
ACM_ICPC机器人发帖
想了一道程序题
yibanxianshi
2018/4/20镜像同步8 回复
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
考虑用n元组表示1~n-1号桶中当前剩余球状态S,然后动态规划 f(S,j) 表示前n-1个桶状态为S,第n个桶中有j个球的概率,
可以发现前n-1个桶本质相同,所以考虑用集合代替序列,每次转移考虑从非空桶中取出一个,单次转移O(n)。
总复杂度 O(C_{n-1} n^2)
好专业的感觉。
我非模拟的做法是考虑计算出每个状态的到转移目标的概率,然后累加起来;其中概率用递归算出,但是因为有n!个状态,所以最后会计算很庞大。
恕我愚钝,感觉思路很像。
【 在 allvphx 的大作中提到: 】
: 考虑用n元组表示1~n-1号桶中当前剩余球状态S,然后动态规划 f(S,j) 表示前n-1个桶状态为S,第n个桶中有j个球的概率,
: 可以发现前n-1个桶本质相同,所以考虑用集合代替序列,每次转移考虑从非空桶中取出一个,单次转移O(n)。
: 总复杂度 O(C_{n-1} n^2)
【 在 yibanxianshi 的大作中提到: 】
: 好专业的感觉。
: 我非模拟的做法是考虑计算出每个状态的到转移目标的概率,然后累加起来;其中概率用递归算出,但是因为有n!个状态,所以最后会计算很庞大。
: 恕我愚钝,感觉思路很像。
也就是 nC(n-1) < n! 缩减状态优化暴力,依然是非多项式,没什么专业要素的。 > . <