当前位置: 首页 > news >正文

2024icpc(Ⅱ)网络赛补题 G

2024icpc(Ⅱ)网络赛补题 G

题目链接:The 2024 ICPC Asia EC Regionals Online Contest (II)

G、Game

在这里插入图片描述

题意:

给定Alice和Bob的每一轮的概率 p 0 , p 1 p_0, p_1 p0,p1

给定Alice和Bob的初始数字 x , y x,y x,y

对于每一轮:

  • 如果Alice获胜,则bob的数字 y y y需要减去 x x x。(如果 y ≤ 0 y\leq0 y0,Alice获胜)
  • 如果Bob获胜,则Alice的数字 x x x需要减去 y y y。(如果 x ≤ 0 x\leq0 x0,Bob获胜)

重复上述游戏,直到出现胜利者。

问,Alice最终能赢得游戏的概率有多大。

思路:

可以直接用减法模拟,用除法加速,类似辗转相除法

x > y x>y x>y时, x x x可以输 x / y x/y x/y场,转移到 ( x % y , y ) (x\%y,y) (x%y,y)的状态,其他状态A必胜

x ≥ y x\geq y xy时, x x x必须赢 y / x y/x y/x场,转移到 ( x , x % y ) (x,x\%y) (x,x%y)的状态,然后在考虑A必胜的情况

代码:

const int mod=998244353; 
int x,y,a0,a1,b,invb,ans;
int p0,p1;
int quickpow(int x,int y){int res=1;while(y){    if(y&1) res=(res*x)%mod;            x=(x*x)%mod;y>>=1;}return res;
}
int inv(int x){return quickpow(x,mod-2);
}
int add(int x,int y){return ((x%mod)+(y%mod))%mod;
}
int sub(int x,int y){return ((x-y)%mod+mod)%mod;
}
int mul(int x,int y){return (x%mod*y%mod)%mod;    
}
int dfs(int x,int y,int p){if(x == 0) return 0;if(y == 0) return p;if(x > y){int k = x / y;int cur = quickpow(p1,k);//到达状态(x%y,y)的概率int res = mul(sub(1,cur),p); //(1-cur)*p => A必胜的概率res = add(res,dfs(x%y,y,mul(p,cur))); //res+到达状态(x%y,y)A胜的概率return res;}else{//x<=y 此时A必须赢下k场到达状态(x,y%x)才可能赢int k = y / x;int cur = quickpow(p0,k); int res = mul(cur,p); //到达状态(x,y%x)的概率return dfs(x,y%x,res);}
}
void solve()
{cin >> x >> y >> a0 >> a1 >> b;b = a0 + a1;int invb = inv(b);p0 = mul(a0,invb);p1 = mul(a1,invb);ans = dfs(x,y,1);cout << ans << endl;
}
http://www.lryc.cn/news/444708.html

相关文章:

  • AIGC时代!AI的“iPhone时刻”与投资机遇
  • Kubernetes调度单位Pod
  • C语言指针篇
  • Unity 使用Editor工具查找 Prefab 中的指定脚本
  • Frida-JSAPI:Interceptor使用
  • 【深度学习】(3)--损失函数
  • git学习报告
  • Spring MVC的应用
  • JavaEE: 深入探索TCP网络编程的奇妙世界(六)
  • 探秘 Web Bluetooth API:连接蓝牙设备的新利器
  • Kubernetes Pod调度基础(kubernetes)
  • Angular由一个bug说起之十:npm Unsupported engine
  • Android 开发高频面试题之——Flutter
  • 视频单目标跟踪研究
  • 若依vue3.0表格的增删改查文件封装
  • 【已解决】如何使用JAVA 语言实现二分查找-二分搜索折半查找【算法】手把手学会二分查找【数据结构与算法】
  • ERROR 1524 (HY000): Plugin ‘mysql_native_password‘ is not loaded
  • .NET 6.0 WebAPI 使用JWT生成Token的验证授权
  • M9410A VXT PXI 矢量收发信机,300/600/1200MHz带宽
  • 用工厂模式演示springboot三种注入方式 | @Autowired
  • es查询语法
  • LabVIEW提高开发效率技巧----合理使用数据流与内存管理
  • 如何在 ECharts 中设置轴标签
  • 怎么用gitee做一个图片仓库,在md文档中用这个图片网络地址,然后显示图片
  • Thinkphp(TP)
  • 【艾思科蓝】前端框架巅峰对决:React、Vue与Angular的全面解析与实战指南
  • IT行业的未来:技术变革与创新的持续推动
  • Python PDF转图片自定义输出
  • Git 常用操作命令说明
  • 自学前端的正确姿势是...