HDU解题报告——1864
来源:互联网 发布:学cnc编程要先学什么 编辑:程序博客网 时间:2024/06/14 14:08
有点坑,题意说的是每张发票中单项物品额度不超过600,也就是说两个A的话需要加起来判断,说白了就是01背包只不过先判断一下输入数据的合法性,吧发票张数当体积,发票总额度当代价记好了,代码如下:
#include <iostream>#include <cstdio>using namespace std;int main(){double q;int n;while(cin>>q>>n&&n){double value[31],r[31]={0};int tn;tn=n;for(int i=1,k=1;i<=tn;i++){char a,b;double v,va=0,vb=0,vc=0,count=0;int num;bool mark=true;cin>>num;for(int j=1;j<=num;j++){cin>>a>>b>>v;count+=v;if(a=='A') va+=v;if(a=='B') vb+=v;if(a=='C') vc+=v;if((a!='A'&&a!='B'&&a!='C')||vc>600||vb>600||va>600) mark=false;}if(!mark||count>1000) {n--;continue;}else value[k++]=count;}for(int i=1;i<=n;i++)for(int j=n;j>=0;j--)if(r[j]<r[j-1]+value[i]) r[j]=r[j-1]+value[i];double j=0;for(int i=0;i<=n;i++) if(r[i]>j&&r[i]<=q) j=r[i];printf("%.2lf\n",j);}return 0;}
0 0
- HDU解题报告——1864
- HDU解题报告——1012
- HDU解题报告——1008
- HDU解题报告——1009
- HDU解题报告——1014
- HDU解题报告——1018
- HDU解题报告——1019
- HDU解题报告——1021
- HDU解题报告——1027
- HDU解题报告——1030
- HDU解题报告——1032
- HDU解题报告——1038
- HDU解题报告——1041
- HDU解题报告——1046
- HDU解题报告——1050
- HDU解题报告——1236
- HDU解题报告——2673
- HDU解题报告——1106
- 高并发系统数据库设计
- cocos2dx关于android.mk的修改
- 高斯消元
- MySQL中ON DUPLICATE KEY UPDATE使用
- MessageQueue翻译
- HDU解题报告——1864
- 使用后缀数组求字符串的最长重复子串
- Handler类描述
- 常用的java正则表达式
- 将数据从MySQL迁移到Oracle的注意事项
- 大数据量高并发的数据库优化,sql查询优化
- MySQL中ON DUPLICATE KEY UPDATE使用
- 黑马程序员_Java面对对象——String类和StringBuffer类
- 移动View试图位置