<背包DP>codevs 1684 垃圾陷阱
2017-10-23 14:22
429 查看
去题面的传送门
求最早什么时候出来?
把高度看做背包的容量,能量看做物品的价值。特判一下在使用这个“物品”时,能量是否大于等于现在的时间。注意读入的数据还要按照时间排一下序。一旦高度达到,立刻输出时间。如果一直没有找到可行的方案,直接输出dp[0]
代码:
求最早什么时候出来?
把高度看做背包的容量,能量看做物品的价值。特判一下在使用这个“物品”时,能量是否大于等于现在的时间。注意读入的数据还要按照时间排一下序。一旦高度达到,立刻输出时间。如果一直没有找到可行的方案,直接输出dp[0]
代码:
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int maxn=1000+10; int D,G; int dp[maxn]; struct hh { int t,v,w; }e[maxn]; bool cmp(hh x,hh y) { return x.t<y.t; } int main() { scanf("%d%d",&D,&G); for(int i=1;i<=G;++i) scanf("%d%d%d",&e[i].t,&e[i].w,&e[i].v); sort(e+1,e+G+1,cmp); dp[0]=10; for(int i=1;i<=G;++i) for(int j=D;j>=0;--j) if(dp[j]>=e[i].t) { if(j+e[i].v>=D) { printf("%d",e[i].t); return 0; } dp[j+e[i].v]=max(dp[j+e[i].v],dp[j]); dp[j]+=e[i].w; } printf("%d",dp[0]); return 0; }
相关文章推荐
- <序列DP>codevs 4748 低价购买
- <序列DP>codevs 2980 买帽子
- <DP>codevs 2189 数字三角形w
- [队内测试Day10.22T3][codevs1684]垃圾陷阱
- 垃圾陷阱codevs1684
- 【codevs1684】垃圾陷阱 解题报告
- 洛谷P1156 垃圾陷阱 背包DP
- <线段树系列1> codevs 1080 线段树练习
- codevs1669 运输装备(背包dp)
- BZOJ3163&Codevs1886: [Heoi2013]Eden的新背包问题[分治优化dp]
- <考试题> codevs 5440 运输计划 (二分+lca+dfs序+树上差分)
- Codevs3269 混合背包 经典背包dp
- CODE[VS]3269 混合背包 (背包DP模板集合)
- <线段树系列2> codevs 1082 线段树练习2
- <单调栈/悬线法>codevs 2491 玉蟾宫 1159 最大全0子矩阵
- <线段树系列3> codevs 1082 线段树练习3
- <tarjan||拓扑>codevs 2066 三角恋
- 洛谷P1156 垃圾陷阱[背包DP]
- <线段树系列4> codevs 4927 线段树练习5
- codevs 1297 硬币 (dp背包类型)