HDOJ1864(水的可怜)

来源:互联网 发布:p图卖萌软件 编辑:程序博客网 时间:2024/04/30 04:01

注意这句话:精确到小数点后两位如果是小数点的话

HDOJ1864

#include<stdio.h>#include<iostream>#include<algorithm>#include<cstring>double dp[3000050];#include<iomanip>using namespace std;int main(){    int n;    double q;    char name;    char mark;    double price;    int m;    while(cin>>q>>n)    {        if(n==0)            break;        int temp=n;        double sum[31];        memset(dp,0,sizeof(dp));        memset(sum,0,sizeof(sum));        int book=0;        int i=0;        while(n--)        {            cin>>m;            double a=0,b=0,c=0;            while(m--)            {                cin>>name>>mark>>price;                if(name!='A'&&name!='B'&&name!='C')                    book++;                if(name=='A')                    a=a+price;                if(name=='B')                    b=b+price;                if(name=='C')                    c=c+price;            }            sum[i]=sum[i]+a+b+c;            if((a+b+c>1000)||(book>0)||(a>600)||(b>600)||(c>600))//只要有一个不是指定报销三种其中一个或发票总额超过1000元或单项超过600,则该发票不得报销                sum[i]=0;            sum[i]=sum[i]*100;            i++;        }        for(int i=0;i<temp;i++)        {            for(int j=(int)(q*100);j>=(int)sum[i];j--)            {                dp[j]=max(dp[j],dp[j-(int)sum[i]]+sum[i]);            }        }        printf("%.2lf\n",dp[(int)(q*100)]/100);    }    return 0;}
0 0
原创粉丝点击