Hanoi Factorys
题面

思路
这道题看似难的一匹,实际上也难的一批还好,甚至n^2 DP都有50分呢.
原谅我一失手成千古恨。
50分思路
就是sort后根据条件DP
if (LIS[i].b>LIS[j].a) f[i]=max(f[j]+LIS[i].h,f[i]);
然后更新MAXX的值输出即可
100分思路
首先,为什么我单调队列只有90啊啊啊啊啊!!!(其实是因为有一个贪心所以导致单调队列太长了)
用优先队列优化,既然当前位置的值是由前i个位置推来的,那么要让结果最大也就是要取前i个节点的最大值了(其实单调性,优先队列以及线段树或树状数组都可以啊)
于是乎,标程也得以推出。
代码
#include<bits/stdc++.h>
using namespace std;
long long n,f[100005],MAXX=-1;
struct hanoi{long long x,y,h;}LIS[100005];
bool cmp(hanoi x,hanoi y){if (x.y==y.y) return x.x>y.x;return x.y>y.y;}
struct node{long long n,num;bool operator <(const node &now)const{return num<now.num;}};
priority_queue<node> q;
int main()
{
freopen("hanoi.in","r",stdin);
freopen("hanoi.out","w",stdout);
cin>>n;
for (int i=1;i<=n;i++) cin>>LIS[i].x>>LIS[i].y>>LIS[i].h;
sort(LIS+1,LIS+n+1,cmp);
q.push((node){0,0});
for (int i=1;i<=n;i++)
{
while (q.top().n>=LIS[i].y) q.pop();
f[i]=q.top().num+LIS[i].h;
q.push((node){LIS[i].x,f[i]});
MAXX=max(MAXX,f[i]);
}
cout<<MAXX<<endl;
return 0;
}
Hanoi Factorys的更多相关文章
- 关于PJ 10.27
题1 : Orchestra 题意: 给你一个 n*m 的矩阵,其中有一些点是被标记过的. 现在让你求标记个数大于 k 个的二维区间个数. n.m .k 最大是 10 . 分析: part 1: 10 ...
- Hanoi问题java解法
用什么语言解法都差不多,思路都是一样,递归,这其中只要注重于开始和结果的状态就可以了,对于中间过程,并不需要深究.(我细细思考了一下,还是算了.=_=) 代码其实很简单注重的是思路. 问题描述:有一个 ...
- HDU1329 Hanoi Tower Troubles Again!——S.B.S.
Hanoi Tower Troubles Again! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (J ...
- ZOJ-1239 Hanoi Tower Troubles Again!
链接:ZOJ1239 Hanoi Tower Troubles Again! Description People stopped moving discs from peg to peg after ...
- Hanoi问题
#include<stdio.h>int main(){ int m; void hanoi(int n,char x,char y,char z); printf("input ...
- The Towers of Hanoi Revisited---(多柱汉诺塔)
Description You all must know the puzzle named "The Towers of Hanoi". The puzzle has three ...
- Hanoi塔
2016-03-19 17:01:35 问题描述: 假设有三个命名为 A B C 的塔座 ,在塔座A上插有n个直径大小不相同,由小到大编号为1 ,2 ,3 ,··· ,n的圆盘,要求将A座上的圆盘移至 ...
- [CareerCup] 3.4 Towers of Hanoi 汉诺塔
3.4 In the classic problem of the Towers of Hanoi, you have 3 towers and N disks of different sizes ...
- 栈应用hanoi
/* 课本p54页*/ #include<stdio.h> #include <iostream> using namespace std; void move(int n, ...
随机推荐
- ES6学习笔记(二):引用数据类型
Array 新增方法 1.Array.from() 将类数组(dom对象 或 arguments)或set\map对象转换为数组 2.Array.of() 将一组值转换为数组,例如Array.of(3 ...
- aop 例外通知就是记录业务方法出现错误 并保存到日志里面的功能
aop 例外通知就是记录业务方法出现错误 并保存到日志里面的功能
- 用宏实现C/C++从非零整数开始的数组
相信大家在刚学习C/C++时,都会对数组下标从0开始编号有疑惑.尽管我是喜欢从0开始编号的“0党”,但是也有很多的人是喜欢从1开始编号. 意识到C/C++数组与指针具有一定的相似性后,我开始构思如何仿 ...
- 学习Spring Boot:(十一) 自定义装配参数
前言 SpringMVC 中 Controller 中方法的参数非常灵活,得益于它的强大自动装配,这次将根据上次遗留下的问题,将研究下装配参数. 正文 SpringMVC中使用了两个接口来处理参数: ...
- M公司的回忆录——L公司
2013年3月笔者回国的第一站便是这人称有福之州的福州.受我兄弟之邀笔者来到了L公司.而这也是笔者与M公司相遇的前缘.此时的L公司只是一个刚起步的创业公司.与所有创业公司一样子——创业初期存在着很多问 ...
- Windows 7 安装VS2008 SP1 失败
由于Windows 7自带了.NET Framework 3.5 SP1, 所以在安装VS 2008 SP1的时候会发生fatal error during installation的错误, 网上找来 ...
- HDU 3966 树链剖分+树状数组 模板
Aragorn's Story Time Limit: 10000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- 洛谷P1140 相似基因 (DP)
洛谷P1140 相似基因 题目背景 大家都知道,基因可以看作一个碱基对序列.它包含了44种核苷酸,简记作A,C,G,TA,C,G,T.生物学家正致力于寻找人类基因的功能,以利用于诊断疾病和发明药物. ...
- Pycharm使用详解
Pycharm使用详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 古人云,工欲善其事,必先利其器.想要学好Python且拥有高效的开发效率,这个时候每个程序员都有自己的开发方式 ...
- [Java] Servlet工作原理之一:体系结构及其容器
一.Servlet体系结构 在 servlet-api.jar (2.5) 中有两个包:javax.servlet 和 javax.servlet.http 1 Servlet ...