牛客 游戏(概率DP)
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)相关推荐
- [luogu2059 JLOI2013] 卡牌游戏 (概率dp)
[luogu2059 JLOI2013] 卡牌游戏 (概率dp) 题目描述 N个人坐成一圈玩游戏.一开始我们把所有玩家按顺时针从1到N编号.首先第一回合是玩家1作为庄家.每个回合庄家都会随机(即按相等 ...
- 小明打联盟 牛客(背包dp,多重背包)
链接:https://ac.nowcoder.com/acm/problem/14553 来源:牛客网 题目描述 小明很喜欢打游戏,现在已知一个新英雄即将推出,他同样拥有四个技能,其中三个小技能的释放 ...
- 小小粉刷匠 牛客(区间dp)
链接:https://ac.nowcoder.com/acm/problem/16129 来源:牛客网 题目描述 "lalala,我是一个快乐的粉刷匠",小名一边快活地唱着歌,一边 ...
- 牛客 流星雨(dp)
链接:https://ac.nowcoder.com/acm/contest/547/D 来源:牛客网 英仙座流星雨(学名Perseids)是以英仙座γ星附近为辐射点出现的流星雨,也称英仙座γ流星雨. ...
- 黑白树(牛客网+树形dp)
链接:https://ac.nowcoder.com/acm/problem/13249 来源:牛客网 题目描述 一棵n个点的有根树,1号点为根,相邻的两个节点之间的距离为1.树上每个节点i对应一个值 ...
- 牛客--卡牌游戏 (概率DP 逆推) P2059
题目链接:卡牌游戏 n个人,m张卡牌上有m个数字.庄家随机一张卡牌,数字为X,第X位出局,随后第X位的下一位做庄家,问,每个人最后获胜的概率是多少? 约瑟夫环的变形问题,这里每次等概率的抽牌,数字相对 ...
- bzoj 4820: [Sdoi2017]硬币游戏 概率dp+高斯消元+KMP
题意 周末同学们非常无聊,有人提议,咱们扔硬币玩吧,谁扔的硬币正面次数多谁胜利. 大家纷纷觉得这个游戏非常符合同学们的特色,但只是扔硬币实在是太单调了. 同学们觉得要加强趣味性,所以要找一个同学扔很多 ...
- 牛客 - 降维打击(dp)
题目链接:点击查看 题目大意:给出一个 n * m 的迷宫,0 表示道路,1表示障碍物,初始时在点 ( x , y ) 到达边界即逃离迷宫,问在时间 k 内逃离迷宫的概率有多大 题目分析:因为涉及到概 ...
- 牛客 contest893 H-Chat (dp)
题目链接 题意 一共有NNN天,每天有MMM个小时.给出女神每天上线的时间点.CasyaCasyaCasya每天只能上线一次,当女神上线他却没有上线的时候女神生气++,最多让女神生气KKK次.问Cas ...
最新文章
- 用TensorFlow实现的Mask R-CNN在人体语义分割上的效果
- 原创 | 一文详解阿里云《人工智能红利渗透与爆发》技术趋势
- 20幅漫画告诉你未来世界是怎样的
- 端口聚合与Trunk综合配置
- 掌握 需求过程阅读笔记06
- 5、继承与派生4-派生类的构造和析构函数
- UNREFERENCED_PARAMETER的作用
- 虚拟机登陆别的服务器吗,云服务器只能用虚拟机登录吗
- html 一个圆圈一个c,如何用c语言程序画一个圆?
- 全国计算机等级考试题库二级C操作题100套(第19套)
- Kinect开发笔记之七Visual Studio结合C#调控Kinect俯仰角度
- 为 IDES471 激活中文
- brew 无法安装iterm2_Mac安装sshpass 替代spawn自动登录脚本(解决rz sz问题)
- matlab中round函数_Excel中round函数的使用方法
- java水仙花数代码_java知识分享篇(五)
- 用计算机分析卫星云图 进行实时天气,气象卫星云图在地面气象观测中的运用...
- 爬虫-爬取豆瓣电影排行榜
- 干货全拿走-用Excel制作小市值轮动价值投资选股器
- 随机过程基础3--宽平稳随机过程的谱分析
- Throughput Latency