HDU1864(01背包)
来源:互联网 发布:淘宝手机描述图片尺寸 编辑:程序博客网 时间:2024/05/22 05:33
题意还是比较复杂的,限制比较多,需要先筛除不满足报销条件的发票:
1.出现 ABC之外的类不报销;2.一张发票内单个类超过600元不报销;3.发票的总金额超过1000不报销。
知道这三个条件之后筛除不满足的剩下的就是01背包了。
这里金额是double类,所以统一乘100,最后再除掉就好了(数据范围可以接受的情况下),把重量和价值看作一样,不过这样会很慢。方程:dp[j] = max( dp[j] , dp[j-v[i]]+v[i] );
另一种优秀的做法的方程是:f[j]=max(f[j],f[j-1]+v[i]);
第一种:
#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>using namespace std;//#pragma comment(linker, "/STACK:1024000000,1024000000")const int maxn = 3000000+10;int dp[maxn];double money;double max_money;int n;int time;int v[maxn];char ch1,ch2;int main(){ while(cin >> max_money >> n) { if(n==0) break; memset(v,0,sizeof(v)); memset(dp,0,sizeof(dp)); int E=0; bool flag = true; max_money *= 100; int Max_money = max_money; for(int k=0; k<n; k++) { cin >> time; int sum = 0; flag = true; int a,b,c; a=b=c=0; for(int i=0; i<time; i++) { cin >> ch1 >> ch2; cin >> money; if(money>600) flag = false; money *= 100; int Money = money; if(ch1=='A') a+=Money; else if(ch1=='B') b+=Money; else if(ch1=='C') c+=Money; else flag = false; if(a>60000||b>60000||c>60000) flag = false; sum += Money; if( sum>100000 ) flag = false; }// cout << "sum:" << sum << endl;// cout << "flag" << flag <<endl; if(flag) { v[E++] = sum; //- cout << "sum: " << sum <<endl; } }// cout << "EEE:" << E <<endl;// for(int i=0;i<E;i++) cout << " " << v[i]; for(int i=0;i<E;i++) { for(int j=Max_money;j>=v[i];j--) { dp[j] = max( dp[j] , dp[j-v[i]]+v[i] ); } } printf("%.2lf\n",dp[Max_money]*1.0/100 ); } return 0;}
我山东
阅读全文
1 0
- hdu1864 (01背包)
- HDU1864(01背包)
- hdu1864 最大报销额(01背包)
- hdu1864 最大报销额(01背包)
- hdu1864(简单的01背包)
- HDU1864 最大报销费用(01背包)
- HDU1864 01背包
- hdu1864-01背包
- HDU1864--01背包
- 最大报销额 hdu1864 01背包
- HDU1864:最大报销额(01背包)
- hdu1864最大报销额 (01背包)
- HDU1864 最大报销额 01背包
- hdu1864 最大报销额(01背包)
- hdu1864 最大报销额 (01背包)
- 【01背包】HDU1864最大报销额
- hdu1864 最大报销额 --01背包
- hdu1864——01背包变形
- 只能输入数字,字母,汉字和下划线
- Windows服务器与Linux客户机使用TCP协议进行数据传输
- 从0到1走进 Kaggle
- 【swust.oj_0415】Digital Roots
- 在Android Studio中使用Kotlin。
- HDU1864(01背包)
- bzoj 4653: [Noi2016]区间 线段树
- laravel5.4 artisan migrate 42000和42S01错误解决办法
- 《游戏脚本的设计与开发》-(RPG部分)3.1 RPG地图到底怎么做?
- 如鹏java学习进程 使用数组进行图片布局
- vlc播放网络流同时收录
- 最笨的努力,就是没有效率的勤奋
- 新手报到
- nodejs部署