hdoj1864最大报销额
2015-07-30 16:44
387 查看
此题略坑500MS过因为要金钱数组要成*100,可以用贪心0ms过但没有尝试。。。
#include<stdio.h> #include<math.h> #include<string.h> #include<stdlib.h> #include<stack> #include<map> #include<time.h> double money[3000011],sum,sm[50],va,suma,sumb,sumc; char a; int main() { int n,i,j,k,am,i1,kind; double m; while(scanf("%lf %d",&m,&n)!=EOF) { i1=0; if(n!=0) { for(i=0;i<n;i++) { sum=suma=sumb=sumc=0; scanf("%d ",&kind); for(k=0;k<kind;k++) { if(k!=kind-1) scanf("%c:%lf ",&a,&va); else scanf("%c:%lf",&a,&va); if(a=='A')suma+=va; else if(a=='B')sumb+=va; else if(a=='C')sumc+=va; else goto s; } sum=suma+sumb+sumc; if(suma>600||sumb>600||sumc>600||sum>1000)goto s; sm[i1]=sum; i1++; s:; } for(i=0;i<=(int)(m*100);i++) money[i]=0; for(i=0;i<i1;i++) for(j=(int)(m*100);j-(int)(sm[i]*100)>=0;j--) { money[j]=money[j]>money[j-(int)(sm[i]*100)]+sm[i]?money[j]:money[j-(int)(sm[i]*100)]+sm[i]; } printf("%.2lf\n",money[(int)(m*100)]); } } return 0; }
相关文章推荐
- STL之二分查找(binary_search(),lower_bound(),upper_bound() )
- ERP系统实施过程问题概览
- hdu杭电 2141 Can you find it? 【二分 N*logN】
- WPF 创建二维码
- cocos2dx飞机大战开发记录(3)
- linux下卸载系统自带或者非自带的jdk
- 使用ShellExecute打开文件夹并选中文件
- getopt用法
- Java异常处理宝典
- 为什么这样使用DefaultTableModel会出错???
- androidのXlist框架上拉下拉刷新案例
- ERP兵法——从案例透视方法(实施篇下)
- office visio连接线控制方法
- java写入文件的几种方法分享
- 关于ViewPager被嵌套在ScrollView中不显示的问题
- 培养能力均衡的团队:高增长公司的高管在我们分析的8种关键领导力
- spring中IOC是什么意思 个人觉得解释的非常有意思
- Android微信支付开发问题
- python命名规则
- Drupal7 模块开发 之 定义模块