Codeforces Round #436 E.Fire(01背包 + 输出路径)

来源:互联网 发布:痘痘变硬了怎么办知乎 编辑:程序博客网 时间:2024/06/10 14:10

题目链接:Fire

#include <iostream>#include <cstdio>#include <fstream>#include <algorithm>#include <cmath>#include <deque>#include <vector>#include <queue>#include <string>#include <cstring>#include <map>#include <stack>#include <set>#define Max(a,b) a>b?a:b#define Min(a,b) a>b?b:a#define mem(a,b) memset(a,b,sizeof(a))using namespace std;typedef long long ll;int dir[4][2]= {{1,0},{-1,0},{0,1},{0,-1}};const double eps = 1e-6;const double Pi = acos(-1.0);const int INF=0x3f3f3f3f;struct Node{    int d,t,p,id;}node[210];struct DP{    int val;    vector<int> vv;}dp[115][2100];bool cmp(Node a, Node b){    if(a.d == b.d){        return a.t < b.t;    }    return a.d < b.d;}int main(){    int T,n;    int a,b,c;    while(~scanf("%d",&n)){        int cnt = 0;        for(int i = 1; i <= n; i++){            scanf("%d%d%d",&a,&b,&c);            if(a >= b) continue;            node[++cnt].t = a;            node[cnt].d = b;            node[cnt].p = c;            node[cnt].id = i;        }        for(int i = 0; i < 115; i++){            for(int j = 0; j < 2100; j++)                dp[i][j].val = 0, dp[i][j].vv.clear();        }        sort(node+1,node+1+n,cmp);        for(int i = 1; i <= n; i++){            for(int j = 0; j < node[i].d; j++){                dp[i][j] = dp[i-1][j];                if(j >= node[i].t){                    if(dp[i][j].val < dp[i-1][j-node[i].t].val + node[i].p){                        dp[i][j] = dp[i-1][j-node[i].t];                        dp[i][j].val = dp[i-1][j-node[i].t].val + node[i].p;                        dp[i][j].vv.push_back(node[i].id);                    }                }            }        }        int ans = 0, pp = -1;        for(int j = 0; j <= 2000; j++){            if(ans < dp[n][j].val) ans = dp[n][j].val, pp = j;        }        printf("%d\n",ans);        printf("%d\n",dp[n][pp].vv.size());        for(int i = 0; i < dp[n][pp].vv.size(); i++){            printf("%d ",dp[n][pp].vv[i]);        }    }    return 0;}
原创粉丝点击