HDU1203 简单01背包问题

来源:互联网 发布:windows操作系统原理 编辑:程序博客网 时间:2024/04/29 06:07

题目链接http://acm.hdu.edu.cn/showproblem.php?pid=1203

#include<stdio.h>#include<algorithm>using namespace std;struct pp{    int cost;    double p;};double min(double a,double b){    return a>b?b:a;}int main(){    double c[10010];    pp a[10010];    int n,m,i,j,k;    while(1)    {                scanf("%d%d",&n,&m);        if(n==0&&m==0) break;        for(i=0;i<=n;i++) c[i]=1;        for(i=0;i<m;i++)        {            scanf("%d%lf",&a[i].cost,&a[i].p);        }        for(i=0;i<m;i++)        {            for(j=n;j>=a[i].cost;j--)                c[j]=min(c[j],c[j-a[i].cost]*(1-a[i].p));        }        printf("%.1f%%\n",(1-c[n])*100);    }    return 0;}

0 0
原创粉丝点击