hdu 4502 吉哥系列故事——临时工计划

来源:互联网 发布:每日经济数据 编辑:程序博客网 时间:2024/04/29 07:15
第三题:先排序
dp[i]=max{dp[i-1],dp[i - (e -s+1)]+c}


#include <stdio.h>#include <string.h>#include <iostream>#include <algorithm>using namespace std;#define INF 100000000int dp[105];struct Node{    int s,e,c;}node[1005];bool cmp(Node a, Node b){    if(a.e == b.e)        return a.s < b.s;    return a.e < b.e;}int main(){    int T, n, m;    for(scanf("%d", &T); T--;)    {        scanf("%d%d", &n, &m);        for(int i = 0; i < m; ++i)            scanf("%d%d%d", &node[i].s, &node[i].e, &node[i].c);        sort(node, node + m, cmp);        dp[0] = 0;        int j = 0;        node[m].e = INF;        for(int i = 1; i <= n; ++i)        {            dp[i] = dp[i - 1];            while(node[j].e == i)            {                int temp;                if((i >= (temp = (node[j].e - node[j].s) + 1)) && (dp[i] <(temp = ( dp[i - temp] + node[j].c))))                        dp[i] = temp;                ++j;            }        }        printf("%d\n",dp[n]);    }    return 0;}


原创粉丝点击