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, ...
随机推荐
- [代码]--给GridControl中的某列添加图片
要让GridControl的某列显示图片只需要数据源中有图片就可以正确显示 1.给DataSet添加一列,格式为image ds.Tables[].Columns.Add("SIGN&quo ...
- 在VMware Workstation上安装Ubuntu 16.04 Server操作系统
Ubuntu 16.04 Server的下载 http://www.ubuntu.org.cn/download/server 按空格键(Space)选中第一个ssh服务 成功!
- 【BZOJ1297】[SCOI2009]迷路(矩阵快速幂)
[BZOJ1297][SCOI2009]迷路(矩阵快速幂) 题面 BZOJ 洛谷 题解 因为边权最大为\(9\),所以记录往前记录\(9\)个单位时间前的.到达每个点的方案数就好了,那么矩阵大小就是\ ...
- 【bzoj2754】 SCOI2012—喵星球上的点名
http://www.lydsy.com/JudgeOnline/problem.php?id=2754 (题目链接) 题意 给出$n$个名字串,$m$个点名串,问对于每一个姓名串,它包含多少个点名串 ...
- C++ ------ const迭代器 和 const_iterator的区别
const迭代器,顾名思义,就是不能改变的迭代器,是常量,其性质是由const决定的.比如说我们这样定义一个const迭代器. vector<,); const vector<int> ...
- Oracle DBMS_RANDOM
DBMS_RANDOM.VALUE -- [0,1)的38位精度小数 SELECT DBMS_RANDOM.VALUE FROM DUAL; -- [10,20)的38位精度小数 SELECT DBM ...
- python---django中序列化
def get_data(req): ret = {'status':True,'data':None} try: user_list = models.User.objects.all() ret[ ...
- bzoj千题计划237:bzoj1492: [NOI2007]货币兑换Cash
http://www.lydsy.com/JudgeOnline/problem.php?id=1492 dp[i] 表示 第i天卖完的最大收益 朴素的dp: 枚举从哪一天买来的在第i天卖掉,或者是不 ...
- 阿里云centos7.3安装lamp环境
参考文档:http://www.jb51.net/article/96649.htm http://m.blog.csdn.net/qq_33813365/article/details/766337 ...
- 作业:JavaScript(数组篇-poker)给我的徒弟出个题。。。记得早点写完,然后大家3人可以早点打牌了
吐槽一下:“今天实际上我左思右想,写个什么东西好呢!手上的笔转了半天....最后还是给自己留点余地!看着他们什么酒店管理系统,呼叫中心系统之类的....简直是把自己固定死了!感觉一撸到底的感觉!!!我 ...