码迷,mamicode.com
首页 > 其他好文 > 详细

HDU - 4815 Little Tiger vs. Deep Monkey

时间:2015-06-17 16:41:12      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:

题目大意:有 A,B 两个人,n 道题目,每题有对应的分数,B 答对题目的概率是 0.5,求 A 不输给 B 的概率不小于 P 要拿的最低分数

解题思路:DP,dp[i][j] 来表示 B 答了前 i 题后分数为 j 的概率,,然后通过 B 的概率求 A 的最低分数

#include <cstdio>
#include <cstring>

double DP[45][40005];

int main() {
    int T;
    scanf("%d", &T);
    while (T--) {
        int N, MAX, tmp;  
        double P;
        scanf("%d%lf", &N, &P);

        memset(DP, 0, sizeof(DP));
        DP[0][0] = 1;
        MAX = 0;
        for (int i = 0; i < N; i++) {
            scanf("%d", &tmp);
            for (int j = 0; j <= MAX; j++)
                if (DP[i][j] > 0) {
                    DP[i + 1][j] += DP[i][j] * 0.5;
                    DP[i + 1][j + tmp] += DP[i][j] * 0.5;
                }
            MAX += tmp;
        }

        double sum = 0;
        for (int j = 0; j <= MAX; j++) {
            sum += DP[N][j];
            if (sum >= P) {
                printf("%d\n", j);
                break;
            }
        }
    } 
    return 0;
}


HDU - 4815 Little Tiger vs. Deep Monkey

标签:

原文地址:http://blog.csdn.net/kl28978113/article/details/46534813

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!