关闭

hdu4815Little Tiger vs. Deep Monkey 概率dp

170人阅读 评论(0) 收藏 举报
分类:
//给n(<=40)个数ai(<=1000)
//猴每次0.5的概率得到ai这个分数
//问人最少需要多少值才能在概率至少大于p的情况比
//猴的分数大
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std ;
const int maxn = 4e4+10 ;
double dp[maxn] ;
int main()
{
    int t ;
    scanf("%d" , &t) ;
    while(t--){
        int n ;
        double p ;
        scanf("%d%lf"  ,&n , &p) ;
        memset(dp , 0 , sizeof(dp)) ;
        dp[0] = 1 ;
        for(int i = 1;i <= n;i++){
            int c ;
            scanf("%d" , &c) ;
            for(int j = maxn-1;j >= c;j--){
                dp[j] = dp[j-c]*0.5 + dp[j]*0.5;
            }
            for(int j = c-1;j >= 0;j--){
                dp[j]*=0.5 ;
            }
        }
        double sum = 0 ;
        int ans = 0 ;
        for(int j = 0;j < maxn;j++){
            sum += dp[j] ;
            if(sum >= p){
                ans = j ;
                break ;
            }
        }
        printf("%d\n" , ans) ;
    }
    return  0 ;
}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:144542次
    • 积分:5747
    • 等级:
    • 排名:第4684名
    • 原创:442篇
    • 转载:0篇
    • 译文:0篇
    • 评论:5条
    最新评论