xtu1148 dp
来源:互联网 发布:日程管理app 知乎 编辑:程序博客网 时间:2024/04/27 21:52
#include <stdio.h>#include <algorithm> struct Node{ int s,t,v; }test[100005]; using namespace std; bool cmp(Node a,Node b){ return a.t <= b.t; } __int64 dp[100005]; int max(int a,int b){ return a > b ? a : b; } int find(int i,int n){ int low = 0,max = n,m; while(1){ if (max - low == 1) return low; m = (low + max) / 2; if (test[i].s >= test[m].t) low = m; else max = m; }//注意这里不能改成当test[i].s == test[m].t 就返回m,因为这样没有考虑存在很多test[x].t等于test[i].//直接返回并不代表找到了s[i]前最近的t[x],再此处纠结很久,搞死人啊! } int main (){ int n,i; while(scanf("%d",&n) != EOF){ for(i = 0;i < n;i++){ scanf("%d%d%d",&test[i].s,&test[i].t,&test[i].v); if (test[i].v <= 0){ i--; n--; } } sort(test,test + n,cmp); memset(dp,0,sizeof(dp)); dp[0] = test[0].v; for(i = 1;i < n;i++){ if(test[i].s < test[0].t) dp[i] = test[i].v > dp[i-1] ? test[i].v : dp[i-1]; else { int last = find(i,n); dp[i] = max(dp[i-1],dp[last] + test[i].v); } } printf("%lld\n",dp[n-1]); } return 0; }
- xtu1148 dp
- dp
- dp
- dp
- 【DP】
- dp
- dp
- DP
- DP
- DP
- DP
- DP
- dp
- DP
- dp
- DP
- DP
- dp
- android 写短信
- SQL Server 2005添加节点到群集工作总结
- Setting KVM processor affinities (2011-07-26 10:04)
- 排序算法(四):冒泡排序
- 分组后,取每组的前几条记录
- xtu1148 dp
- ORDER BY 子句在视 图、内联函数、派生表、子查询和公用表表达式中无效
- 集合子集问题:
- 什么是云计算
- c# GDI+简单绘图
- 递归查找出目录下的所有文件
- VMware VDI技术与实现
- 直接下载豆瓣fm的全部歌曲py脚本。(json操作)
- Oracle的Environment variable:"path" 失败问题