我是靠谱客的博主 虚幻小虾米,这篇文章主要介绍Gym - 101606F Flipping Coins——dp,现在分享给大家,希望可以做个参考。

dp(i,j)表示扔i次j个硬币朝上的概率,然后就很好想了。。。

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
const int maxn = 500;
int n, k;
double dp[maxn][maxn];
int main() {
    scanf("%d %d", &n, &k);
    for (int i = 0; i <= k; i++) {
        for (int j = 0; j <= n; j++) {
            dp[i][j] = 0.0;
        }
    }
    dp[0][0] = 1.0;
    for (int i = 0; i < k; i++) {
        for (int j = 0; j <= n; j++) {
            if (j != n) {
                dp[i+1][j] += dp[i][j] / 2;
                dp[i+1][j+1] += dp[i][j] / 2;
            }
            else {
                dp[i+1][j-1] += dp[i][j] / 2;
                dp[i+1][j] += dp[i][j] / 2;
            }
        }
    }
    double ans = 0;
    for (int i = 0; i <= n; i++) {
        ans += dp[k][i]*i;
    }
    printf("%.8lfn", ans);
    return 0;
}


最后

以上就是虚幻小虾米最近收集整理的关于Gym - 101606F Flipping Coins——dp的全部内容,更多相关Gym内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(108)

评论列表共有 0 条评论

立即
投稿
返回
顶部