标签:01背包
10 3 4 0.1 4 0.2 5 0.3 0 0
44.0%HintYou should use printf("%%") to print a ‘%‘.
这是一题裸的01背包,概率用1-所有学校都不要他表示。
参考代码:
#include<stdio.h>
#define M 10005
#define min(a,b) a<b?a:b
double dp[M];
int main()
{
int n,m,x,a[M],min1;
double b[M],c;
while(~scanf("%d%d",&n,&m)&&(n+m))
{
min1=M;
for(int i=0;i<=n;i++)
dp[i]=1.0;
for(int i=0;i<m;i++)
{
scanf("%d%lf",&a[i],&c);
if(a[i]<min1)
min1=a[i];
b[i]=1-c;
}
for(int i=0;i<m;i++)
{
for(int j=n;j>=a[i];j--)
dp[j]=min(dp[j],dp[j-a[i]]*b[i]);
}
printf("%.1lf%%\n",(1-dp[n])*100);
}
return 0;
}
版权声明:本文为博主原创文章,随便转载。
hdu 1203 - I NEED A OFFER!(01背包)解题报告
标签:01背包
原文地址:http://blog.csdn.net/luwhere/article/details/47404631