HDU 4502

来源:互联网 发布:mac暴风影音删除不了 编辑:程序博客网 时间:2024/06/16 08:23

题目链接:HDU4502

先排序再DP,f[j]表示第j天结束最多能得到多少的工资。这个有点类似HDU的4512那个,但是这个题目比那个简单。直接上代码吧。

#include<stdio.h>#include<string.h>#include<stdlib.h>typedef struct{    int s, e, v;}Job;int cmp(const void *a, const void *b){    Job *c, *d;    c = (Job *)a;    d = (Job *)b;    return c -> e -  d -> e;}int main(){    int T, m, n;    int f[105];    Job a[1005];    scanf("%d", &T);    while(T--)    {        scanf("%d%d", &m, &n);        memset(f, 0, sizeof(f));        for(int i = 0; i < n; ++i)            scanf("%d%d%d", &a[i].s, &a[i].e, &a[i].v);        qsort(a, n, sizeof(a[0]), cmp);        int ans = 0;        for(int i = 0; i < n; ++i)        {            int max = 0;            if(a[i].e > m)                break;            for(int j = 0; j < a[i].s; ++j)                max = max > f[j] ? max : f[j];            if(max + a[i].v > f[a[i].e])            {                f[a[i].e] = max + a[i].v;                ans = ans > f[a[i].e]? ans : f[a[i].e];            }        }        printf("%d\n", ans);    }    return 0;}


 

原创粉丝点击