POJ3616 Milking Time(DP:最大子段和)
来源:互联网 发布:python算t统计量 编辑:程序博客网 时间:2024/06/05 11:53
题意:
奶牛产奶,一共n长的时间,可以有m个时间段,每个时间段对应一个产奶量,一个时间段后要休息r时间,求最大产奶量。
要点:
就是一个最大子段和的变形,先将时间段从开始排序,可以写出状态转移方程为:
if (time[i].x >= time[j].y + r)
dp[i] = max(dp[j] + time[i].w, dp[i]);
边界条件就是dp[i]=time[i].w。
#include<stdio.h>#include<stdlib.h>#include<algorithm>using namespace std;struct node{int x, y, w;}time[1005];int dp[1005];int n, m, r;int cmp(node a, node b){return a.x < b.x;}int main(){int i, j;while (scanf("%d%d%d", &n, &m, &r) != EOF){for (i = 1; i <= m; i++)scanf("%d%d%d", &time[i].x, &time[i].y, &time[i].w);sort(time + 1, time + m + 1, cmp);for (i = 1; i <= m; i++)dp[i] = time[i].w;int ans = -1;for (i = 1; i <= m; i++){for (j = 1; j < i; j++)if (time[i].x >= time[j].y + r)dp[i] = max(dp[j] + time[i].w, dp[i]);ans = max(ans, dp[i]);}printf("%d\n", ans);}return 0;}
0 0
- POJ3616 Milking Time(DP:最大子段和)
- poj3616——Milking Time(dp最大子序列)
- POJ3616 Milking Time 【DP】
- POJ3616 Milking Time DP
- POJ3616 Milking Time (dp)
- poj3616 Milking Time 入门dp
- POJ3616 MILKING TIME
- poj3616 Milking Time
- POJ3616---Milking Time
- POJ3616:Milking Time
- poj3616 Milking time
- POJ3616-Milking Time
- POJ3616-Milking Time
- poj3616 Milking Time
- POJ 3616 Milking Time(基础DP,最大上升子序列和变形)
- POJ3616 Milking Time 动态规划
- poj3616 Milking Time(动态规划)
- POJ3616——Milking Time
- 习题8-12 UVA - 1153 Keep the Customer Satisfied 顾客是上帝(优先队列贪心)
- java语言基础入门——运算符的介绍
- PopupWindow常见问题
- block使用
- extern作用详解
- POJ3616 Milking Time(DP:最大子段和)
- Some file crunching failed, see logs for details
- 欢迎使用Markdown编辑器写博客
- Android中Activity的finish()、destroy()、System.exit()区别
- Mybatis1.0
- sql语句,获取2016年7月份,每日任务数量
- 封装缓存
- MarkDown 语法笔记
- 判断奇偶 位运算