poj-3616 Milking Time

版权声明:最后一年,加油~ https://blog.csdn.net/zzti_xiaowei/article/details/82152559

[题目链接]

思路:最大递增子序列,一开始还真没想出来,有点尬~
代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int Max_n=1e6+10;
const int Max_m=1e3+10;

int n,m,r;
struct edge{
    int s,t,e;
    bool operator<(const edge&e)const {
        return t<e.t;
    }
}e[Max_m];
int dp[Max_n];

int main()
{
    scanf("%d%d%d",&n,&m,&r);
    memset(dp,0,sizeof(dp));
    for(int i=0;i<m;i++)
        scanf("%d%d%d",&e[i].s,&e[i].t,&e[i].e);
    sort(e,e+m);
    int ans=0;
    for(int i=0;i<m;i++){
        dp[i]=e[i].e;
        for(int j=0;j<i;j++){
            if(e[i].s>=e[j].t+r&&dp[i]<dp[j]+e[i].e)
            dp[i]=dp[j]+e[i].e;
        }
        ans=max(ans,dp[i]);
    }
    printf("%d\n",ans);
    return 0;
}

猜你喜欢

转载自blog.csdn.net/zzti_xiaowei/article/details/82152559