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

23 40 1009 32 1049

Sample Output

172186885 92980918 16529941229582513 163885050 39458156 102374877 116777758 216371874 55544199 95860736 8136787

Data Constraint

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

分析

我想大声挖倍内听!吔X啦梁非凡!

内!我要炒内啊!

↑这是我看到题目一瞬间脑补的

这题意有个等价的方法

就是第i次游戏选第i个人,第i个人未出局就出局,并且使后面i+1~n个人有p概率出局,已出局就不管

其实是一样的

那么可以写DP

设f[i][j]为选第i个人前,1~i-1有j个人被点出局了

那么状态转移显然:

1、f[i+1][j+1]+=f[i][j]*((y-x)/y)^(j+1)(i被点掉了)

2、f[i+1][j]+=f[i][j]*(x/y)^(j)(i刚好没了)

最后求和除个n就行

#include <iostream>
#include <cstdio>
#include <memory.h>
using namespace std;
typedef long long ll;
const int P=258280327;
const int N=2e3+10;
int T,n;
ll x,y,ny[N],f[N][N];ll Power(ll x,ll y) {ll ans=1;for (;y;y>>=1,(x*=x)%=P) if (y&1) (ans*=x)%=P;return ans;}int main() {for (scanf("%d",&T);T;T--) {scanf("%d%lld%lld",&n,&x,&y);ll cy=Power(y,P-2);ny[0]=1;memset(f,0,sizeof f);f[1][0]=1;for (int i=1;i<=n;i++) ny[i]=ny[i-1]*(y-x)%P*cy%P;for (int i=1;i<n;i++)for (int j=0;j<i;j++)if (f[i][j])(f[i+1][j+1]+=f[i][j]*ny[j+1]%P)%=P,(f[i+1][j]+=f[i][j]*(1-ny[j]+P)%P)%=P;for (int i=0;i<n;i++) {ll lans=0;for (int j=1;j<=n;j++) (lans+=f[j][i])%=P;printf("%lld ",lans*Power(n,P-2)%P);}printf("\n");}
}

View Code

转载于:https://www.cnblogs.com/mastervan/p/10316836.html

[概率期望DP]JZOJ 4212 我想大声告诉你相关推荐

  1. 【loj6191】「美团 CodeM 复赛」配对游戏 概率期望dp

    题目描述 n次向一个栈中加入0或1中随机1个,如果一次加入0时栈顶元素为1,则将这两个元素弹栈.问最终栈中元素个数的期望是多少. 输入 一行一个正整数 n . 输出 一行一个实数,表示期望剩下的人数, ...

  2. [NOIP2016]换教室(概率期望$DP$)

    其实吧我老早就把这题切了--因为说实话,这道题确实不难啊--李云龙:比他娘的状压DP简单多了 今天我翻以前在Luogu上写的题解时,突然发现放错代码了,然后被一堆人\(hack\)--蓝瘦啊\(ORZ ...

  3. ACM概率期望dp刷题总结

    这个周刷了很多概率期望有关的dp题目,缘起2016青岛D题和取log的神操作题HDU 5988 2016青岛区域赛 (最小费用流) 这类题目没有固定的模板,而且概率可以很容易插入一些经典模型,比如下面 ...

  4. 大佬(概率期望DP)

    首先根据数据范围,可以判断基本上是n^2的复杂度 通过分析我们发现每一次都可以从m个数中任意选,既然任意选,那么此时的概率的分母就是不变的,然而题中涉及的是某一段的最大值,所以我们按套路假设 f[i] ...

  5. HDU 4405 概率期望DP

    有 0到 n 个格子.掷骰子走路,求出到终点的数学期望,有飞行的路线. dp[i] 存储在i位置走到终点的期望. 转移方程dp[i]=(dp[i+1] ----> dp[i+6])/6+1; 有 ...

  6. bzoj2878 [Noi2012]迷失游乐园——概率期望DP

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2878 这个博客写得很好:https://www.cnblogs.com/qt666/p/72 ...

  7. BZOJ-4008: [HNOI2015]亚瑟王 (概率期望DP)

    4008: [HNOI2015]亚瑟王 Time Limit: 20 Sec  Memory Limit: 512 MBSec  Special Judge Submit: 1627  Solved: ...

  8. bzoj3450 Easy(概率期望dp)

    3450: Tyvj1952 Easy Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 876  Solved: 648 [Submit][Statu ...

  9. 【BZOJ2337】XOR和路径,概率期望DP+高斯消元

    Time:2016.08.27 Author:xiaoyimi 转载注明出处谢谢 传送门 思路: 与游走思路有一定相似的地方 对答案的每一位进行判断 通过高斯消元解出每个点到n xor路径为1的概率 ...

最新文章

  1. centos7 安装Git
  2. 【编程题目】调整数组顺序使奇数位于偶数前面
  3. SAP按单生产和重复制造
  4. Linux下安装配置MySQL
  5. 2017计算机应用考研大纲,2017考研计算机大纲
  6. Mysql jdbc driver源码浅析(一)
  7. Android ListView中EditView再次焦点获取
  8. php 网路io是什么意思,io接口位于什么和什么之间
  9. ucgui移植到rt_thread simulator
  10. FreeSwitch WINDOWS无法支持H264
  11. 「数据集」一文道尽人脸数据集
  12. 电线电缆行业MES解决方案
  13. adm怎么下bt连接_迅雷不能下载版权敏感资源,试试这两款优秀的BT下载神器
  14. 启动TC的TAO窗口
  15. 说说C/C++编译的那些事儿
  16. 计算机应用基础2004版,计算机应用基础2004年上半年全国试题
  17. 2022强国杯初赛部分题目
  18. android 点击查看大图_你是不是遇到,在花瓣网部分图片详情页,点击“放大镜”无法预览高清大图?...
  19. 数据结构——二叉树总结
  20. 【微信小程序】零基础学 | 小程序语法

热门文章

  1. EJBCA使用之注册用户及创建证书
  2. 如何在Android模拟器上安装和卸载APK程序包
  3. 使用Docker打包发布Django应用
  4. LeetCode:贪婪算法
  5. Codeforces Round #281 (Div. 2) C. Vasya and Basketball 二分
  6. AngularJS学习笔记一:简单入门
  7. 巧用DOS命令合并多个文本文件的内容
  8. 【转】面向GC的Java编程
  9. uva11111 Generalized Matrioshkas
  10. New Text Document.udl