[动态规划]POJ3616(dp入门题)
2015-10-13 21:21
429 查看
/* Name:POJ3616 (DP入门) Actor:HT Time:2015年10月13日 Error Reporte: 1.好好想清楚dp思路...要先会写出明确的dp式子,再理清楚各种条件 */ #include <iostream> #include <stdio.h> #include <string.h> #include <algorithm> #include <math.h> #include <vector> #include <stack> #define N 1010 using namespace std; //http://vj.acmclub.cn/problem/viewProblem.action?id=16864 int dp ; struct obj { int pret; int aft; int val; }ob ; int m, r; int ans; bool cmp(obj a, obj b) { if (a.pret < b.pret) return true; if (a.pret == b.pret && a.aft < b.aft) return true; return false; } int main() { int t, i, j, k; int temp,n; while (scanf("%d %d %d", &n, &m, &r) != EOF) { for (i = 0; i < m; i++) { scanf("%d %d %d", &ob[i].pret, &ob[i].aft, &ob[i].val); } sort(ob, ob + m, cmp); ans = 0; for (i = 0; i < m; i++) { dp[i] = ob[i].val; } for (i = 0; i < m; i++) { for (j = 0; j < i; j++) { if (ob[i].pret >= ob[j].aft + r) dp[i] = (dp[i] >= dp[j] + ob[i].val ? dp[i] : dp[j] + ob[i].val); ans = ans>=dp[i] ? ans:dp[i]; //bug点 } } printf("%d\n", ans); } return 0; } //dp[i] = 到第i次之前,如果取这一次,可能的最大量值 //dp[i] = max{dp[i],dp[j]+val[i]} 遍历所有可能允许拿这一次的情况 (1+...+1000)
相关文章推荐
- C#面试题汇总2
- iOS 获得通讯录中联系人的所有属性--b
- css 样式赶紧来look
- Scala数据库操作
- 利用python中的pyquery库简单的抓取数据
- HDOJ 2160 母猪的故事 (斐波那契)
- Tree(MST模板题)
- 设置Tomcat的UTF-8编码
- hdu4810Wall Painting dp+异或
- 关于BLL DAL MODEL的小问题
- 广义智能集论文
- MATLAB图像处理工具箱
- android系统默认设置修改(1)-- 设置默认浏览器
- python中pandas库学习笔记
- 05.移动先行之谁主沉浮----小应用的美化
- 第 二 十 九 天 :监 控 软 件 之 nagios
- 楼层扔鸡蛋问题
- CC2541 连接微信(1)——微信 AirSync 和 微信精简协议 介绍
- centos6.7 64位服务器安装opencv-2.4.9
- “卷积”是什么?