POJ 3616 Milking Time (基础DP)

来源:互联网 发布:java专业技能怎么写 编辑:程序博客网 时间:2024/05/18 14:12

题目链接:点击打开链接

以时间段进行DP即可

AC代码如下:

#include <iostream>#include <cstring>#include <algorithm>using namespace std;struct interval{    int beginTime, endTime;    int effec;    int operator < ( interval& o)    {        if(beginTime>o.beginTime)    return 0;        else    return 1;    }};interval Intervals[1005];int N, M, R;int main(){    while(cin>>N>>M>>R)    {        for(int i=1; i<=M; ++i)        {            cin>>Intervals[i].beginTime;            cin>>Intervals[i].endTime;            Intervals[i].endTime += R;            cin>>Intervals[i].effec;        }        sort(Intervals+1,Intervals+M+1);        int dp[1005];        memset(dp,0,sizeof(dp));        for(int i=1; i<=M; ++i)        {            dp[i] = Intervals[i].effec;            for(int j=1; j<i; ++j)            {                if(Intervals[j].endTime<=Intervals[i].beginTime)                {                    dp[i] = max(dp[i],Intervals[i].effec + dp[j]);                }            }        }        int maxN = 0;        for(int i=1; i<=M; ++i)            if(maxN<dp[i])  maxN = dp[i];        cout<<maxN<<endl;    }    return 0;}


原创粉丝点击