hdu2955 Robberies(01背包)

来源:互联网 发布:手机淘宝拍摄脸部 编辑:程序博客网 时间:2024/05/23 22:42

hdu2955

分析

很久以前做的,感觉就是要理解题意,转化一下就是01背包。

题目

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

代码

#include <iostream>#include <cstring>#include <ctime>#include <fstream>#include <cstdlib>#include <algorithm>using namespace std;struct node{    int m;    double p;};int main(){    int T;    cin>>T;    double d[10010];    node bank[110];    while(T--)    {        double Pro;        int Num;        cin>>Pro>>Num;        memset(d,0,sizeof(d));        int sum=0;        for(int i=0; i<Num; i++)        {            cin>>bank[i].m;            cin>>bank[i].p;            bank[i].p=1-bank[i].p;            sum+=bank[i].m;        }        d[0]=1;        for(int i=0; i<Num; i++)        {            for(int j=sum; j>=bank[i].m; j--)            {                d[j]=max(d[j],d[j-bank[i].m]*bank[i].p);            }        }        for(int i=sum; i>=0; i--)        {            if(d[i]>1-Pro)            {                cout<<i<<endl;                break;            }        }    }    return 0;}
0 0
原创粉丝点击