Queuing

我们假设有 个窗口, 个人(小心我这里和题目里面的定义是反的😂)。我们先直接给出答案公式:

它的含义就是枚举第 号人前有多少个人,然后用权值去乘以这个权值出现的概率。其实去枚举权值是一样的,就是把上面的 做了一个整体替换,但是感觉这么写更好算。可以对比两种枚举方式发现枚举前面有多少人计算起来更加简单。

我们接下来就对式子进行展开:

原式

括号里右边依据二项式定理有:

那么我们现在考虑化简括号里面的左边:

这里我们发现 的时候对答案没有贡献,可以从 开始(这样做后面化简更简单,大家可以不这么做往下走试试,最后发现还是要舍去 的情况),那么这里我们注意到此时有限制条件了

我们用 进行整体替换:

我们最终将化简后的括号里面的左右部分代入:

原式 (n≥2)

(n≥2)

那么现在讨论 的情况,答案自然就是 ,发现也符合上述推导的公式,那么我们也就不用再特殊考虑了,既答案就是

#include<bits/stdc++.h>

using namespace std;

int main() {
    int n, m;
    cin >> m >> n;
    printf("%.8f", 1.0 * (n - 1) / m + 1);
}