【888题竞赛篇】第十二题,2024ICPC网络赛第二场-游戏(Game)

更多精彩内容

这里是带你游历编程世界的Dashcoding编程社,我是Dash/北航硕士/ICPC区域赛全国排名30+/给你呈现我们眼中的世界!

256题算法特训课,帮你斩获大厂60W年薪offer

原题

2024ICPC网络赛第二场真题-游戏

B站动画详解

问题分析

Alice 和 Bob 正在进行一场游戏,游戏的规则如下:

  1. 初始筹码

    • Alice 拥有 n n n 个筹码。
    • Bob 拥有 m m m 个筹码。
  2. 每一轮的结果

    • Alice 赢
      • 概率 p 0 = a 0 a 0 + a 1 p_0 = \frac{a_0}{a_0 + a_1} p0=a0+a1a0
      • 操作
        • 如果 Alice 的筹码 n n n 大于或等于 Bob 的筹码 m m m,Alice 赢得整个游戏。
        • 否则,Bob 失去 Alice 当前的筹码数,即 m = m − n m = m - n m=mn
    • Bob 赢
      • 概率 p 1 = a 1 a 0 + a 1 p_1 = \frac{a_1}{a_0 + a_1} p1=a0+a1a1
      • 操作
        • 如果 Bob 的筹码 m m m 大于或等于 Alice 的筹码 n n n,Bob 赢得整个游戏。
        • 否则,Alice 失去 Bob 当前的筹码数,即 n = n − m n = n - m n=nm
    • 平局
      • 概率 1 − p 0 − p 1 1 - p_0 - p_1 1p0p1(根据题目提示,这部分可以忽略,因为题目中提到平局无效,我们可以将其视为游戏状态不变)。
  3. 目标

    • 计算 Alice 最终赢得整个游戏的概率,结果需对 998244353 998244353 998244353 取模。

思路分析

核心思路

问题的关键在于模拟 Alice 和 Bob 之间的筹码变动过程,并计算 Alice 最终赢得整个游戏的概率。由于每一轮的结果依赖于当前的筹码状态,我们可以使用递归或动态规划的方法来解决。

递归关系

f ( n , m ) f(n, m) f(n,m) 表示在 Alice 拥有 n n n 个筹码,Bob 拥有 m m m 个筹码的状态下,Alice 赢得整个游戏的概率。那么:

f ( n , m ) = p 0 ⋅ f ( n , m − n ) + p 1 ⋅ f ( n − m , m ) f(n, m) = p_0 \cdot f(n, m - n) + p_1 \cdot f(n - m, m) f(n,m)=p0f(n,mn)+p1f(nm,m)

其中:

  • 如果 Alice 赢得一轮(概率 p 0 p_0 p0),则 Bob 失去 n n n 个筹码,新的状态为 ( n , m − n ) (n, m - n) (n,mn)
  • 如果 Bob 赢得一轮(概率 p 1 p_1 p1),则 Alice 失去 m m m 个筹码,新的状态为 ( n − m , m )
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值