codeforces 864E Fire (排序+背包dp)
来源:互联网 发布:gmip源码分析 编辑:程序博客网 时间:2024/05/21 22:49
题目大意:
现在你有n个物品,每个物品三个属性,我个人记为a,b,c.
a表示你需要花a的时间去救这个物品,b表示到b时间后物品就销毁了,c表示救这个物品的价值,求出能救到的最大价值。
n <= 100 b <= 2000 c <= 20 a <= 20
排序后dp,要先救活时间短的,所以就是从小到大排序
#include <bits/stdc++.h>using namespace std;struct node{ int t,d,p,id;}s[110];int dp[2010];vector<int> v[2010];int cmp(node a,node b){ return a.d<b.d;}int main(){ int n; scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d%d%d",&s[i].t,&s[i].d,&s[i].p),s[i].id=i; } sort(s+1,s+n+1,cmp); for(int i=1;i<=n;i++) { if(s[i].d-s[i].t<=0) continue; for(int j=s[i].d-1;j-s[i].t>=0;j--) { if(dp[j]<dp[j-s[i].t]+s[i].p) { dp[j]=dp[j-s[i].t]+s[i].p; v[j]=v[j-s[i].t]; v[j].push_back(s[i].id); } } } int best=0,bestI=0; for(int i=0;i<=2000;i++) { if(dp[i]>best) { best=dp[i]; bestI=i; } } printf("%d\n",best ); printf("%d\n",v[bestI].size() ); for(int i=0;i<v[bestI].size();i++) printf("%d ",v[bestI][i] );}
阅读全文
0 0
- Codeforces 864E Fire【排序+背包dp】
- codeforces 864E Fire (排序+背包dp)
- Codeforces 864E Fire (DP)
- Codeforces 864E Fire (DP)
- Codeforces 864E Fire(01背包)
- Codeforces 862 E. Fire (01背包)
- Codeforces Round #436 (Div. 2) E. Fire(背包DP+输出路径)
- codeforces 864E Fire
- CodeForces 864E Fire
- Codeforces 864E (Codeforces Round #436 (Div. 2)) E. Fire 背包输出路径
- CodeForces 148E Porcelain(dp+背包)
- Codeforces Round #436 (Div. 2)-背包&排序&输出状态-E. Fire
- Codeforces Round #436 (Div. 2)-E-Fire(01背包输出路径)
- Codeforces Round #436 (Div. 2) E. Fire(01背包+输出路径)
- Codeforces Round #436 E.Fire(01背包 + 输出路径)
- codeforces 864E 背包
- Codeforces Round #436 (Div. 2) E fire DP
- Codeforces 148E Porcelain [预处理+dp背包]
- c++primer 第五、六章
- SEO与内部链接?
- 块级元素和行内元素多种——水平,垂直、水平垂直居中的方法
- 文本挖掘预处理之向量化与Hash Trick
- 旅游类App原型制作分享-Triposo
- codeforces 864E Fire (排序+背包dp)
- 【oracle】如何将dmp文件导入到自己的oracle数据库中
- iOS 工具类-----frame的设置和自适应
- 一键安装 python2.7.12 & python3.6.0 &pip 至 centos
- VC与JavaScript交互(二) ———— 调用JS函数
- 《C++ Primer Plus(第6版)》编程练习代码 Chapter 4
- javaScript鼠标事件实现图片转换和换肤
- call 和apply用法
- kaggle-泰塔尼克号-GBDT-快速分析