POJ 3616 Milking Time(DP)
2017-07-24 10:56
411 查看
http://poj.org/problem?id=3616
题意:给出一些牛开始产奶和结束产奶的时间还有他们能产出的价值,每时每刻只能有一头牛产奶而且相邻的产奶的两头牛必须经过R小时,问能获得的最大产奶价值是多少。
解法:DP,我是直接暴力去找每头牛前面满足结束时间last.end <= now.start - r的牛,取max,更新。
代码如下:
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int dp[1000005];
struct node {
int s, e, val;
}cow[1005];
bool cmp(node a, node b) {
if(a.e == b.e) {
if(a.s == b.s)
return a.val > b.val;
return a.s < b.s;
}
return a.e < b.e;
}
int main() {
int n, m, r;
cin >> n >> m >> r;
for(int i = 1; i <= m; i++) {
scanf("%d%d%d", &cow[i].s, &cow[i].e, &cow[i].val);
}
sort(cow + 1, cow + m + 1, cmp);
for(int i = 1; i <= m; i++) {
dp[i] = dp[i - 1];
if(cow[i].s - r >= 0) {
int tmp = cow[i].s - r;
int j = i - 1;
for(; j > 0; j--) {
if(cow[j].e <= tmp)
dp[i] = max(dp[i], dp[j] + cow[i].val);
}
}
dp[i] = max(dp[i], cow[i].val);
}
cout << dp[m] << "\n";
return 0;
}
题意:给出一些牛开始产奶和结束产奶的时间还有他们能产出的价值,每时每刻只能有一头牛产奶而且相邻的产奶的两头牛必须经过R小时,问能获得的最大产奶价值是多少。
解法:DP,我是直接暴力去找每头牛前面满足结束时间last.end <= now.start - r的牛,取max,更新。
代码如下:
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int dp[1000005];
struct node {
int s, e, val;
}cow[1005];
bool cmp(node a, node b) {
if(a.e == b.e) {
if(a.s == b.s)
return a.val > b.val;
return a.s < b.s;
}
return a.e < b.e;
}
int main() {
int n, m, r;
cin >> n >> m >> r;
for(int i = 1; i <= m; i++) {
scanf("%d%d%d", &cow[i].s, &cow[i].e, &cow[i].val);
}
sort(cow + 1, cow + m + 1, cmp);
for(int i = 1; i <= m; i++) {
dp[i] = dp[i - 1];
if(cow[i].s - r >= 0) {
int tmp = cow[i].s - r;
int j = i - 1;
for(; j > 0; j--) {
if(cow[j].e <= tmp)
dp[i] = max(dp[i], dp[j] + cow[i].val);
}
}
dp[i] = max(dp[i], cow[i].val);
}
cout << dp[m] << "\n";
return 0;
}
相关文章推荐
- [POJ 3616]Milking Time[DP]
- poj3616——Milking Time(dp最大子序列)
- poj 3616 Milking Time 【dp】
- POJ 3616 Milking Time(简单DP)
- POJ 3616 Milking Time(DP,区间和最大)
- POJ - 3616 Milking Time(DP)
- POJ 3616 Milking Time(基础DP,最大上升子序列和变形)
- 【DP】POJ_3616_Milking Time
- POJ 3616 Milking Time(区间DP)
- POJ 3616 Milking Time(DP)
- POJ 3616 Milking Time (基础DP)
- poj 3616 Milking Time 【区间DP】
- POJ 3616 D - Milking Time(DP)
- POJ 3616 Milking Time 挤奶问题,带权区间DP
- [ poj 3616] Milking Time [ DP ]
- POJ 3616 Milking Time 【DP】
- Milking Time (poj 3616 简单DP)
- Milking Time --poj 3616(区间dp)
- poj 3616 Milking Time ---DP(带权重的区间动态规划)
- POJ 3616 Milking Time (排序+dp)