Codeforces Round #436 (Div. 2) Fire
来源:互联网 发布:网络贷款哪家好 编辑:程序博客网 时间:2024/06/14 00:11
01背包的变形问题。
#include <bits\stdc++.h>#define pb push_back#define mp make_pairusing namespace std;struct node{ int t,d,p,i;}a[105];bool cmp(node a,node b){ return a.d<b.d;}int b[105];int dp[2005],path[105][2005];int main(){ int n; int cnt=0; scanf("%d",&n); for(int i=0;i<n;i++) scanf("%d%d%d",&a[i].t,&a[i].d,&a[i].p),a[i].i=i+1; sort(a,a+n,cmp); int maxn=0,tmp=0; memset(path,-1,sizeof(path)); memset(dp,0,sizeof(dp)); for(int i=0;i<n;i++) { if(i!=0) for(int j=1;j<a[i].t;j++) path[i][j]=path[i-1][j]; for(int j=a[i].d-1;j>=a[i].t;j--) { if(dp[j]<=dp[j-a[i].t]+a[i].p)//01背包如果放入,路径就是自己 { dp[j]=dp[j-a[i].t]+a[i].p; path[i][j]=i; } else if(i>0)//如果不放入,路径就是前一个的路径 { path[i][j]=path[i-1][j]; } } } for(int i=1;i<=2000;i++) { if(dp[i]>maxn) { maxn=dp[i]; tmp=i; } } //for(int i=1;i<=7;i++)printf("%d\n",path[n-1][i]); int tmp1=n-1; while(tmp>0) { // printf("%d\n",tmp); b[cnt++]=a[path[tmp1][tmp]].i; tmp=tmp-a[path[tmp1][tmp]].t; tmp1--; tmp1=path[tmp1][tmp]; } //sort(b,b+cnt); printf("%d\n",maxn); printf("%d\n",cnt); for(int i=cnt-1;i>=0;i--)//按顺序输出,应该是倒叙输出 printf("%d ",b[i]); puts(""); return 0;}/*33 7 42 6 53 7 6*/
阅读全文
0 0
- Codeforces Round #436 (Div. 2) E. Fire
- Codeforces Round #436 (Div. 2)E.Fire
- Codeforces Round #436 (Div. 2) Fire
- Codeforces Round #436 (Div. 2)E. Fire
- Codeforces Round #436 (Div. 2) E. Fire
- Codeforces Round #436 (Div. 2) E fire DP
- Codeforces Round #436 (Div. 2) 864E. Fire
- Codeforces 864E (Codeforces Round #436 (Div. 2)) E. Fire 背包输出路径
- Codeforces Round #436 (Div. 2)-E-Fire(01背包输出路径)
- Codeforces Round #436 (Div. 2) E. Fire(背包DP+输出路径)
- Codeforces Round #436 (Div. 2) E. Fire(01背包+输出路径)
- Codeforces Round #436 (Div. 2)-背包&排序&输出状态-E. Fire
- Codeforces Round #436 (Div. 2) E. Fire (有放入顺序有关的01背包)
- 【01背包 && 记录路径 && 约束】Codeforces Round #436 (Div. 2) E. Fire
- Codeforces Round #436 E. Fire
- Codeforces Round #436 (Div. 2)
- Codeforces Round #436 (Div. 2)
- [Codeforces Round #436](Div. 2)
- 线程的几种状态
- 集合深浅拷贝以及经常遇到的坑(面试常问)
- iOS开发实战之Cookie注入
- 在GitHub上最受欢迎的大多是库或框架
- iOS 图文并茂的带你了解深拷贝与浅拷贝
- Codeforces Round #436 (Div. 2) Fire
- [iOS]终极横竖屏切换解决方案
- iOS实录:GCD使用小结(二)
- iOS实录:GCD使用小结(一)
- 深入剖析 iOS 性能优化
- erlang otp的编译
- 浅谈iOS Crash(2)
- 代码处理 iOS 的横竖屏旋转
- MJExtension框架源码分析