hdu1203 I NEED A OFFER (01背包概率)

来源:互联网 发布:南阳网络推广外包 编辑:程序博客网 时间:2024/04/28 18:17

题意:speakless有n万美元,从m个学校选若干学校,每个学校有一定概率被选上,求最高的概率被至少一个学校选上。


分析:01背包,求被选不上的概率,这样就能知道答案了。


http://acm.hdu.edu.cn/showproblem.php?pid=1203



#include<stdio.h>#include<string.h>#include<algorithm>#include<iostream>using namespace std;struct hdu1203{    int v;    double prob;}e[10010];int main(){    int V,N;    double dp[10010];    while(cin >> V >> N ){        if(V==0 && N==0) break;//注意:这里要求同时为0        for(int i=0;i<10010;i++) //初始化            dp[i]=1.0;        for(int i=1;i<=N;i++)            cin >> e[i].v>>e[i].prob;        for(int i=1;i<=N;i++){            for(int j=V;j>=e[i].v;j--)                dp[j]=min(dp[j],dp[j-e[i].v]*(1-e[i].prob));        }        printf("%.1lf%%\n",(1-dp[V])*100);    }    return 0;}


0 0
原创粉丝点击