Collecting Bugs 题解

Collecting Bugs

https://ac.nowcoder.com/acm/problem/106693

根据上课听的雨巨的思路,移项运算一下然后写代码
图片说明

#include <iostream>
#include <algorithm>
#include <string.h>
using namespace std;
const int N = 1010;
double dp[N][N];
int main() 
{
    int n, s;
    while (~scanf("%d%d", &n, &s)) {
        memset(dp, 0, sizeof(dp));
        for (int i = n; i >= 0; --i) {
            for (int j = s; j >= 0; --j) {
                if (i == n && j == s) continue;
                dp[i][j] = 1.0 * (n - i) / n * j / s * dp[i + 1][j] + 1.0 * i / n * (s - j) / s * dp[i][j + 1] + 1.0 * (n - i) / n * (s - j) / s * dp[i + 1][j + 1] + 1.0;
                dp[i][j] *= 1.0 * n * s / (n * s - i * j);
            }
        }
        printf("%.4f\n", dp[0][0]);
    }
}
全部评论

相关推荐

09-01 09:00
已编辑
四川旅游学院 运营
牛客55195891...:主要是专业不好,别的没毛病
牛客解忧铺
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务