关闭

poj 3616 Milking Time

507人阅读 评论(0) 收藏 举报

dp题。

/*
POJ: 3616 Milking Time
*/
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <algorithm>

#define M 1005

using namespace std;

struct Interval {
    long long start, end;
    long long eff;
    
    bool operator < (const struct Interval &t) const {
        if(start == t.start)
            return end < t.end;
        else
            return start < t.start;
    }
}inter[M];

long long dp[M];
long n, r;
int m;

void DyP()
{
    for(int i = 0; i < m; i++)
        dp[i] = inter[i].eff;
    
    for(int i = 1; i < m; i++) {
        for(int j = 0; j < i; j++) {
            if(inter[i].start - inter[j].end >= r) {
                dp[i] = max(dp[j] + inter[i].eff, dp[i]);
            }
        }
    }
}

int main()
{
    //freopen("data.in", "rb", stdin);
    
    while(scanf("%ld%d%ld", &n, &m, &r) != EOF) {
        for(int i = 0; i < m; i++) {
            cin >> inter[i].start >> inter[i].end >> inter[i].eff;
        }
        
        sort(inter, inter + m);
        
        DyP();
        
        long long res = 0;
        for(int i = 0; i < m; i++)
            res = max(res, dp[i]);
        cout << res << endl;
    }
    
    return 0;
}


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:94308次
    • 积分:2007
    • 等级:
    • 排名:第19204名
    • 原创:111篇
    • 转载:1篇
    • 译文:1篇
    • 评论:26条
    文章分类
    最新评论