B-游戏_牛客挑战赛59_牛客网


#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
const int N=1e5+10,mod=998244353;
int n;
char f[N][3];
ll t[N][3];//第i个人选j的概率
ll ss[N][3];//i后面的人都不出j的概率
ll dp[N][3];//考虑前i个人,胜者出的是j
ll res[N][3];//每个人获胜概率
ll qmi(ll a,ll b,ll p)
{ll res=1;while(b){if(b&1) res=(ll)res*a%p;b>>=1;a=(ll)a*a%p;}return res;
}
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%s",f[i]);ss[n+1][0]=ss[n+1][1]=ss[n+1][2]=1;//求每个人选择某项的概率 for(int i=1;i<=n;i++){int sum=0;for(int j=0;j<3;j++)sum+=(f[i][j]=='1');for(int j=0;j<3;j++){if(f[i][j]=='1'){t[i][j]=qmi(sum,mod-2,mod);}}}//i后面的人都不选j的概率,逆序求 for(int i=n;i;i--){for(int j=0;j<3;j++){ss[i][j]=ss[i+1][j]*(((1-t[i][j])%mod+mod)%mod)%mod;}}//前i个人,获胜者出的是j的概率 for(int i=0;i<3;i++)dp[1][i]=t[1][i];for(int i=2;i<=n;i++){//以石头获胜dp[i][0]=dp[i-1][1]*t[i][0]%mod;dp[i][0]=(dp[i][0]+dp[i-1][0]*(t[i][0]+t[i][1])%mod)%mod;//以剪刀获胜dp[i][1]=(ll)dp[i-1][2]*t[i][1]%mod;dp[i][1]=(dp[i][1]+dp[i-1][1]*(t[i][1]+t[i][2])%mod)%mod;//以布获胜dp[i][2]=(ll)dp[i-1][0]*t[i][2]%mod;dp[i][2]=(dp[i][2]+dp[i-1][2]*(t[i][0]+t[i][2])%mod)%mod;}//每个人获胜概率 for(int i=1;i<=n;i++){//用石头赢得概率res[i][0]=t[i][0]*ss[i+1][2]%mod;if(i>1) res[i][0]=res[i][0]*dp[i-1][1]%mod;//用剪刀赢得概率res[i][1]=t[i][1]*ss[i+1][0]%mod;if(i>1) res[i][1]=res[i][1]*dp[i-1][2]%mod;//用布赢得概率res[i][2]=t[i][2]*ss[i+1][1]%mod;if(i>1) res[i][2]=res[i][2]*dp[i-1][0]%mod;}for(int i=1;i<=n;i++){ll t=0;for(int j=0;j<3;j++){t=(t+res[i][j])%mod;}printf("%lld ",t);}
}

牛客 游戏(概率DP)相关推荐

  1. [luogu2059 JLOI2013] 卡牌游戏 (概率dp)

    [luogu2059 JLOI2013] 卡牌游戏 (概率dp) 题目描述 N个人坐成一圈玩游戏.一开始我们把所有玩家按顺时针从1到N编号.首先第一回合是玩家1作为庄家.每个回合庄家都会随机(即按相等 ...

  2. 小明打联盟 牛客(背包dp,多重背包)

    链接:https://ac.nowcoder.com/acm/problem/14553 来源:牛客网 题目描述 小明很喜欢打游戏,现在已知一个新英雄即将推出,他同样拥有四个技能,其中三个小技能的释放 ...

  3. 小小粉刷匠 牛客(区间dp)

    链接:https://ac.nowcoder.com/acm/problem/16129 来源:牛客网 题目描述 "lalala,我是一个快乐的粉刷匠",小名一边快活地唱着歌,一边 ...

  4. 牛客 流星雨(dp)

    链接:https://ac.nowcoder.com/acm/contest/547/D 来源:牛客网 英仙座流星雨(学名Perseids)是以英仙座γ星附近为辐射点出现的流星雨,也称英仙座γ流星雨. ...

  5. 黑白树(牛客网+树形dp)

    链接:https://ac.nowcoder.com/acm/problem/13249 来源:牛客网 题目描述 一棵n个点的有根树,1号点为根,相邻的两个节点之间的距离为1.树上每个节点i对应一个值 ...

  6. 牛客--卡牌游戏 (概率DP 逆推) P2059

    题目链接:卡牌游戏 n个人,m张卡牌上有m个数字.庄家随机一张卡牌,数字为X,第X位出局,随后第X位的下一位做庄家,问,每个人最后获胜的概率是多少? 约瑟夫环的变形问题,这里每次等概率的抽牌,数字相对 ...

  7. bzoj 4820: [Sdoi2017]硬币游戏 概率dp+高斯消元+KMP

    题意 周末同学们非常无聊,有人提议,咱们扔硬币玩吧,谁扔的硬币正面次数多谁胜利. 大家纷纷觉得这个游戏非常符合同学们的特色,但只是扔硬币实在是太单调了. 同学们觉得要加强趣味性,所以要找一个同学扔很多 ...

  8. 牛客 - 降维打击(dp)

    题目链接:点击查看 题目大意:给出一个 n * m 的迷宫,0 表示道路,1表示障碍物,初始时在点 ( x , y ) 到达边界即逃离迷宫,问在时间 k 内逃离迷宫的概率有多大 题目分析:因为涉及到概 ...

  9. 牛客 contest893 H-Chat (dp)

    题目链接 题意 一共有NNN天,每天有MMM个小时.给出女神每天上线的时间点.CasyaCasyaCasya每天只能上线一次,当女神上线他却没有上线的时候女神生气++,最多让女神生气KKK次.问Cas ...

最新文章

  1. 用TensorFlow实现的Mask R-CNN在人体语义分割上的效果
  2. 原创 | 一文详解阿里云《人工智能红利渗透与爆发》技术趋势
  3. 20幅漫画告诉你未来世界是怎样的
  4. 端口聚合与Trunk综合配置
  5. 掌握 需求过程阅读笔记06
  6. 5、继承与派生4-派生类的构造和析构函数
  7. UNREFERENCED_PARAMETER的作用
  8. 虚拟机登陆别的服务器吗,云服务器只能用虚拟机登录吗
  9. html 一个圆圈一个c,如何用c语言程序画一个圆?
  10. 全国计算机等级考试题库二级C操作题100套(第19套)
  11. Kinect开发笔记之七Visual Studio结合C#调控Kinect俯仰角度
  12. 为 IDES471 激活中文
  13. brew 无法安装iterm2_Mac安装sshpass 替代spawn自动登录脚本(解决rz sz问题)
  14. matlab中round函数_Excel中round函数的使用方法
  15. java水仙花数代码_java知识分享篇(五)
  16. 用计算机分析卫星云图 进行实时天气,气象卫星云图在地面气象观测中的运用...
  17. 爬虫-爬取豆瓣电影排行榜
  18. 干货全拿走-用Excel制作小市值轮动价值投资选股器
  19. 随机过程基础3--宽平稳随机过程的谱分析
  20. Throughput Latency

热门文章

  1. 记录一次云服务器被劫持下载了挖矿病毒的处理过程
  2. 歌曲版本识别或者歌曲检索(总结)
  3. 阿里云配置SSH密钥连接
  4. 简谈FPGA设计中不同设计方法资源消耗对比
  5. 吸引力法则,你变了,一切就变了
  6. txt文件读取(已解决中文乱码)
  7. 有心栽花花不开,无心插柳柳成荫
  8. throw 和 throws
  9. 行业大咖齐聚鹏城 八大峰会打造2021深圳国际全触与显示展“新名片”
  10. 计算机丢失libjcc dll,libjcc.dll 64位