HDU-1864(DP_01)

来源:互联网 发布:js uri malformed 编辑:程序博客网 时间:2024/06/07 13:24

这道题目真心写戳了...难看死了..没办法,,因为没有专心的去写,,一会来信息了 一会去拿个快递呀什么的...

所以这个写成这样子了...都想死了..可是不想重写了 就贴上去了...

#include <stdio.h>#include <string.h>#include <stdlib.h>#include <math.h>int sum;int N;//N represents the number of checksint num[10005];int dp[5000005];int count;int max(int a,int b){return a>=b?a:b;}int main(){double tt;while(scanf("%lf",&tt)!=EOF){memset(dp,0,sizeof(dp));scanf("%d",&N);if(N==0)break;sum=(int )(tt*100);count=0;for(int i=1;i<=N;i++){int M;int ta=0;int tb=0;int tc=0;int flag=1;int t=0;scanf("%d",&M);while(M--){getchar();char c;scanf("%c:%lf",&c,&tt);if(c=='A'){ta+=(int)(tt*100);if(ta>60000)flag=0;}else if(c=='B'){tb+=(int )(tt*100);if(tb>60000)flag=0;}else if(c=='C'){tc+=(int )(tt*100);if(tc>60000)flag=0;}elseflag=0;}t=ta+tb+tc;if(flag==0||t>100000)continue;num[count++]=t;}for(i=0;i<count;i++){for(int j=sum;j>=num[i];j--)dp[j]=max(dp[j-num[i]]+num[i],dp[j]);}printf("%.2lf\n",dp[sum]/100.0);}return 0;}


 

原创粉丝点击