小欧拿了 n 个杯子排成了一排,其中有 k 个杯子装满了水,剩余的 n-k 个杯子为空的。小欧每回合的操作如下: 1. 随机选择一个杯子。 2. 杯子是空的。回合直接结束。 3. 杯子是满的。如果小欧上一回合喝过了水,则回合结束;否则将喝完这杯水,回合结束。 小欧想知道,她喝完所有水的回合数期望是多少?
两个正整数 n,k ,用空格隔开。 1≤ k ≤ n ≤ 10^6
一个浮点数,代表期望的回合数。如果你的答案和正确答案的误差不超过 10^-6 ,则认为答案正确。
1 1
1.000000000
2 1
2.000000000
2 2
4.000000000
考点:概率论
数据规模 n ≤ 1e6 | 限制 1 秒 / 256MB | 标准输入输出
参考方向:概率论
用期望的线性性质拆解问题,避免枚举全部状态。
思路框架(概率论 通法 · 非本题专属)
实现要点:计数期望时,先算总方案数,再算目标方案数,比值即概率。
复杂度:时间 O(n) ~ O(n²) | 空间 O(1) ~ O(n)
该范式的通法易错点
对照本题
本题在源数据中没有官方考点标签,方向由题面特征推断,仅供参考。
样例 1:输入 1 1 → 输出 1.000000000
只有一杯水,第一回合就可以喝完。
样例 2:输入 2 1 → 输出 2.000000000
有50%的概率1回合喝完,有25%的概率需要2回合 ,有12.5%的概率需要3回合……
总期望为0.5*2+0.25*3+0.125*4+……=2
样例 3:输入 2 2 → 输出 4.000000000
第一回合有100%的概率喝一杯水。
第二回合无论是否选到有水的杯子都不会喝水。
0.5*3+0.25*4+0.125*5+...=4
解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:2024年秋招-OPPO-后端岗笔试。