列表

详情


QY16. 无聊的牛牛和羊羊

描述

牛牛和羊羊非常无聊.他们有n + m个共同朋友,他们中有n个是无聊的,m个是不无聊的。每个小时牛牛和羊羊随机选择两个不同的朋友A和B.(如果存在多种可能的pair(A, B),任意一个被选到的概率相同。),然后牛牛会和朋友A进行交谈,羊羊会和朋友B进行交谈。在交谈之后,如果被选择的朋友之前不是无聊会变得无聊。现在你需要计算让所有朋友变得无聊所需要的时间的期望值。

输入描述

输入包括两个整数n 和 m(1 ≤ n, m ≤ 50)

输出描述

输出一个实数,表示需要时间的期望值,四舍五入保留一位小数。

示例1

输入:

2 1

输出:

1.5

原站题解

C 解法, 执行用时: 1ms, 内存消耗: 372KB, 提交时间: 2020-12-23

#include <stdio.h>
   
int main()
{
    int n, m, s, k;
    scanf("%d%d", &n, &m);
    s = n + m;
    double f0 = 0, f1 = s * 0.5, cur;
    for(k = 2; k <= m; ++k)
    {
        cur = s * (s - 1) / (1.0 * k * (2 * s - k - 1))
            + 2 * (s - k) * 1.0 / (2 * s - k - 1) * f1
            + (k - 1) * 1.0 / (2 * s - k - 1) * f0;
        f0 = f1;
        f1 = cur;
    }
    printf("%.1lf\n", f1);
}

C 解法, 执行用时: 2ms, 内存消耗: 364KB, 提交时间: 2020-07-28

#include <stdio.h>
   
int main()
{
    int n, m, s, k;
    scanf("%d%d", &n, &m);
    s = n + m;
    double f0 = 0, f1 = s * 0.5, cur;
    for(k = 2; k <= m; ++k)
    {
        cur = s * (s - 1) / (1.0 * k * (2 * s - k - 1))
            + 2 * (s - k) * 1.0 / (2 * s - k - 1) * f1
            + (k - 1) * 1.0 / (2 * s - k - 1) * f0;
        f0 = f1;
        f1 = cur;
    }
    printf("%.1lf\n", f1);
}

上一题