2024icpc(Ⅱ)网络赛补题 GL

1|02024icpc(Ⅱ)网络赛补题 GL

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

1|1G、Game

1|0题意:

给定Alice和Bob的每一轮的概率p0,p1

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

对于每一轮:

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

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

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

1|0思路:

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

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

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

1|0代码:

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; }

1|2L、502 Bad Gateway

1|0题意:

给定一个T,每一步可以做以下两个操作:

1、减1

2、随机重置为[1,T]中的某个整数

求在最优策略下,得到0的期望步数

1|0思路:

最优策略为选择一个阈值S,如果大于S的话,就重置;如果小于S的话就直接减到0

所以我们可以列出下面这个方程

E=S×(1+S)2×(S+1)×(TS)T

可以解得

E=S12+TS=S2+TS12

所以能得到期望的最大值在S=2T取得

所以在2T2T两点取

void solve(){ int t; cin >> t; int x1 = (int)sqrt(2*t); int x2 = min(t,x1+1); int fz1 = x1*x1 + 2*t - x1; int fm1 = 2*x1; int g1 = __gcd(fz1,fm1); fz1 /= g1; fm1 /= g1; int fz2 = x2*x2 + 2*t - x2; int fm2 = 2*x2; int g2 = __gcd(fz2,fm2); fz2 /= g2; fm2 /= g2; if(fz1*fm2<=fz2*fm1) cout << fz1 << " " << fm1 << endl; else cout << fz2 << " " << fm2 << endl; }

__EOF__

本文作者xued
本文链接https://www.cnblogs.com/xdeyt/p/18428167.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   xde_yt  阅读(149)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
点击右上角即可分享
微信分享提示