hdu 1203(dp)

来源:互联网 发布:手机免费刷q币软件 编辑:程序博客网 时间:2024/05/26 19:16

点击打开链接


题目:

有n元,m个学校,现在向这m个学校投offer,,投offer有一定的花费,而且每份offer都有一个不被接受的概率

求n元钱被至少一个接受的概率

我们可以转化一下,求被全部拒绝的概率

(不要以为把所有的概率相乘就可以了,还要考虑钱的因素)

Ps:初始化为1


#include<stdio.h>#include<string.h>#define min(x,y) x<y?x:y#define N 10001int main(){int i,j;int n,m;int A[N];double B[N];double dp[N];while(scanf("%d%d",&n,&m)!=-1,m+n){for(i=1;i<=m;i++)scanf("%d%lf",&A[i],&B[i]);for(i=0;i<=n;i++)dp[i]=1;for(i=1;i<=m;i++){for(j=n;j>=A[i];j--)dp[j]=min(dp[j-A[i]]*(1-B[i]),dp[j]);}printf("%.1f%%\n",(1-dp[n])*100);}return 0;}


原创粉丝点击