您的位置:首页 > 其它

POJ 3616 Milking Time(区间DP)

2016-04-09 21:44 429 查看
http://poj.org/problem?id=3616

#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<algorithm>
#include<iostream>
#define N 1005
using namespace std;
int n, m, r, ans, tmp, st
, ed
, ef
, dp
, t;
int main()
{
scanf("%d%d%d", &n, &m, &r);
for (int i = 1; i <= m; i++)
{
scanf("%d%d%d", &st[i], &ed[i], &ef[i]);
dp[i] = ef[i];
}
ans = 0;
for (int i = 1; i < m; i++)
for (int j = i+1; j <= m; j++)
if (ed[i] > ed[j] || ed[i] == ed[j] && st[i] > st[j])
{
t = st[i];st[i] = st[j];st[j]=t;
t = ed[i];ed[i] = ed[j];ed[j]=t;
t = ef[i];ef[i] = ef[j];ef[j]=t;
t = dp[i];dp[i] = dp[j];dp[j]=t;
}
for (int i = 1; i <= m; i++)
{
tmp = st[i] - r;
for (int j = 1; j <= m && ed[j] <= tmp; j++)
{
dp[i] = max(dp[i], dp[j] + ef[i]);
}
ans = max(ans, dp[i]);
}
printf("%d\n", ans);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: