Hdu4502 吉哥系列故事——临时工计划 (dp)

来源:互联网 发布:应聘软件测试工程师 编辑:程序博客网 时间:2024/04/29 07:28

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4502

腾讯编程马拉松第〇天的第三题。

思路:dp,感觉有点像背包,但又不太像……

4501目测是多维的背包,这个知识点还没有研究过,近期搞一下

#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define max(x,y) ((x)>(y)?(x):(y))int dp[105];int n,m;struct Node{    int s,e,w;    void Get ()    {        scanf("%d%d%d",&s,&e,&w);    }    friend bool operator < (const Node &x,const Node &y)    {        if (x.e==y.e)            return x.w>y.w;        return x.e<y.e;    }}data[1005];int main (){#ifdef ONLINE_JUDGE#else    freopen("read.txt","r",stdin);  #endif    int i,T;    scanf("%d",&T);    while (T--)    {        scanf("%d%d",&m,&n);        for (i=0;i<n;i++)            data[i].Get();        memset(dp,0,sizeof(dp));        sort (data,data+n);        for (i=0;i<n;i++)        {            if (data[i].e>m)                break;            for (int j=data[i].e;j<=m;j++)                dp[j]=max(dp[data[i].s-1]+data[i].w,dp[j]);        }        printf("%d\n",dp[m]);    }    return 0;}