我想大声告诉你【DP】【逆元】

该博客讨论了一个游戏中关于概率的问题,参与者在每轮游戏中有概率出局。博主解析了计算每个人在遭受k次攻击后出局的概率的方法,涉及到了逆元的概念,并提供了解题思路和代码实现。
摘要由CSDN通过智能技术生成

>Description
因为小Y 是知名的白富美,所以自然也有很多的追求者,这一天这些追求者打算进行一次游戏来踢出一些人,小R 自然也参加了。
这个游戏有n 个人参加,每一轮随机选出一个还没有出局的人x,接着x 会出局。x 在出局之后剩下的人会受到一次攻击,每一个人在遭到攻击之后会有p 的概率出局。(注意遭到攻击出局的人是不能攻击剩下的人的)
在所有人都出局之后,遭受攻击次数等于特定值的人能够成为胜者。所以现在小R 想要知道对于每一个0 <= k < n,自己恰好在遭受k 次攻击之后出局的概率是多少。(这里的出局指的不是被攻击出局)
注意在这题中,所有数值的运算在模258280327 的意义下进行。


>Input
第一行输入一个正整数T 表示数据组数。
对于每一组数据输入仅一行三个数n, x, y,表示在这组数据中有n 个人参赛,p = x/y。保证y 和258280327 互质。

>Output
对于每组数据,输出一行n 个整数,表示对于k = 0到n - 1 的概率在模258280327 意义下的值。


>Sample Input
2
3 40 100
9 32 1049

>Sample Output
172186885 92980918 16529941
229582513 163885050 39458156 102374877 116777758 216371874 55544199 95860736 8136787

对于60% 的数据,n <=100
对于100% 的数据,n <= 2* 10^3,1 <= T <= 5,0<= x < y <= 10^9


>解题思路

对于输出样例为什么那么大,是因为它是x/y%P,也就是x乘上y的逆元再%P,所以会很big= =

f [ i ] [ j ] f[i][j] f[i][j] i i i~ n n n的人还没出局,并且他们都受到了 j j j次攻击,因为每个人都是一样的(除了小R),所以只用保证小R还没出局,其他出局的人的顺序不管怎样排的是一样的。

所以对于f的转移,有两种情况(因为i~n没出局,所以我们考虑i-1是如何出局的):

  1. i − 1 i-1 i1个人是被选中出局的: f [ i ] [ j ] = f [ i − 1 ] [ j − 1 ] ∗ ( 1 − p ) j − 1 f[i][j]=f[i-1][j-1]*(1-p) ^{j-1} f[i][
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值