poj 3616 Milking Time

题目链接http://poj.org/problem?id=3616

题目分类:动态规划

代码:

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<algorithm>

using namespace std;

int n,m,r;
int dp[2000];

struct P
{
    int a,b,c;

}point[1009];

int cmp(P X,P Y)
{
    if(X.b==Y.b)  return X.a>Y.a;
    return X.b<Y.b;
}

int main()
{
    scanf("%d %d %d",&n,&m,&r);
    memset(dp,0,sizeof(dp));

    for(int i=1;i<=m;i++)
    {
        scanf("%d %d %d",&point[i].a,&point[i].b,&point[i].c);
    }
    sort(point+1,point+m+1,cmp);

    //printf("\n");
    for(int i=1;i<=m;i++)
    {
        dp[i]=point[i].c;
        //printf("%d %d %d\n",point[i].a,point[i].b,point[i].c);
    }
    //printf("\n");

    for(int i=1;i<=m;i++)
    {
        if(point[i].a>n||point[i].b>n)
            continue;
        for(int j=i-1;j>0;j--)
        {
            if(point[i].a-point[j].b>=r)
            {
                dp[i]=max(dp[j]+point[i].c,dp[i]);
               // break;
            }
        }
    }

    int ans=-100;
    //
    for(int i=1;i<=m;i++)
        ans=max(ans,dp[i]);

    printf("%d\n",ans);
    //printf("%d   ",dp[i]);
    return 0;
}


/*for(int i=1;i<=n;i++)
{
    i-1 1
    dp[i]=
     dp[i-1]

    i-1 0
    i-1 0
    find ok dp[i]=

}*/

 

posted @ 2015-11-04 23:05  Gssol  阅读(142)  评论(0编辑  收藏  举报