HDU1864----最大报销额

发布时间:2016-12-7 22:34:01 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"HDU1864----最大报销额",主要涉及到HDU1864----最大报销额方面的内容,对于HDU1864----最大报销额感兴趣的同学可以参考一下。

只要把数据处理下,就是01背包了。。 #include <stdio.h> #include <iostream> #include <algorithm> #include <string.h> #define max(a,b) a>b?a:b using namespace std; int main() { int n,m,i,j,flag[35]; double p[35]; char ch; double sum[35],dp[35]; double max; while(scanf("%lf%d",&max,&n),n) { for(i=1;i<=n;i++) sum[i]=0; for(i=1;i<=n;i++) { scanf("%d",&m); flag[i]=0; double suma=0,sumb=0,sumc=0; for(j=1;j<=m;j++) { getchar(); scanf("%c:%lf",&ch,&p[j]); sum[i]+=p[j]; if(ch=='A') suma+=p[j]; else if(ch=='B') sumb+=p[j]; else if(ch=='C') sumc+=p[j]; else flag[i]=1; } if(sum[i]>1000 || suma>600 || sumb>600 || sumc>600) flag[i]=1; } memset(dp,0,sizeof(dp)); for(i=1;i<=n;i++) { for(j=n;j>=1;j--) { if(flag[i]==0) dp[j]=max(dp[j],dp[j-1]+sum[i]); } } double maxn=-1; for(i=1;i<=n;i++) { if(dp[i]>maxn && dp[i]<=max) maxn=dp[i]; } printf("%.2lf\n",maxn); } return 0; }

上一篇:nagios报警参数详细设置
下一篇:boost库asio详解1——strand与io_service区别

相关文章

相关评论