#3967. 🐰牛局长的 New 21 点-中

🐰牛局长的 New 21 点-中

🃏 “牛局长的 New 21 点”

(兔猫信奥学院 · 牛局长 ✧ 闪电 ✧ 豹警官 ✧ 朱迪 ✧ 尼克)

📜 故事背景

课间,牛局长 带来一副改良的 “21 点” 纸牌游戏:“迷你马概率实验太成功啦!今天咱们玩牌。” 规则很简单:

  1. 爱丽丝以 $0$ 分开局;
  2. 只要当前分数 $<k$,就必须继续抽牌;
  3. 每次抽到 $1\sim\text{maxPts}$ 的随机整数,各数出现概率相等;
  4. 一旦分数 $\ge k$ 就立刻停牌。

请你帮牛局长计算:最终得分 $\le n$ 的概率。 (误差 $\le10^{-5}$ 视为正确)


🌟 题目描述

给定整数 $n,k,\text{maxPts}$:

  • 爱丽丝在得分 $<k$ 时不停抽牌,每张牌得分均匀随机自 ${1,\dots,\text{maxPts}}$;
  • 抽牌独立同分布;
  • 得分 $\ge k$ 立刻停牌。

求爱丽丝最终得分 $\le n$ 的概率 $P$,输出 $P$(双精度)。


🚪 输入格式

n k maxPts

🎯 输出格式

probability

🧩 样例

10 1 10
1.00000

解释:$k=1$,爱丽丝抽一张即停。牌面 $1\sim10$ 都 $\le n$,故概率 $1$。

6 1 10
0.60000

解释:仍只抽一张。10 种等可能结果中,只有 $1\sim6$ 满足 $\le6$,故概率 $6/10=0.6$。


🔢 数据范围

参数 取值
$0\le k\le n\le10^{4}$
$1\le\text{maxPts}\le10^{4}$

💡 解题思路

设 $\displaystyle dp[i]=\Pr(\text{最终得分}=i)$。 当 $i<k$ 必须继续抽,状态转移:

$$dp[i]=\frac1{\text{maxPts}}\sum_{t=1}^{\text{maxPts}}dp[i-t] \quad(\text{仅当 }i-t\ge0) $$

观察可知 得分区间 $[k,n]$ 才会被统计进答案。 用滑动窗口维护最近 $\text{maxPts}$ 个 $dp$ 前缀和,可在 $O(n)$ 内完成。

🐮✨🐰 祝 AC 顺利!