HDU1203

来源:互联网 发布:删除表多个字段sql 编辑:程序博客网 时间:2024/05/20 22:36

简单0-1背包和概率有关的背包和HDU2955类似
注意dp[0]的初始化

#include <iostream>#include <string.h>#include <algorithm>using namespace std;int w[10000+10];double v[10000+10];double dp[10000+10];int main(){    int m,n;    while(cin>>m>>n&&(m||n)){        for(int i=0;i<n;i++)cin>>w[i]>>v[i];        for(int j=0;j<=10000;j++){            dp[j]=1;        }dp[0]=1;        for(int i=0;i<n;i++){            for(int j=m;j>=w[i];--j){                dp[j]=min(dp[j],dp[j-w[i]]*(1-v[i]));            }        }        double ans=0;        for(int i=0;i<=m;i++){            ans=max(ans,1-dp[i]);        }        printf("%.1lf%%\n",ans*100);    }}
0 0