题面

思路

这道题看似难的一匹,实际上也难的一批还好,甚至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的更多相关文章

  1. 关于PJ 10.27

    题1 : Orchestra 题意: 给你一个 n*m 的矩阵,其中有一些点是被标记过的. 现在让你求标记个数大于 k 个的二维区间个数. n.m .k 最大是 10 . 分析: part 1: 10 ...

  2. Hanoi问题java解法

    用什么语言解法都差不多,思路都是一样,递归,这其中只要注重于开始和结果的状态就可以了,对于中间过程,并不需要深究.(我细细思考了一下,还是算了.=_=) 代码其实很简单注重的是思路. 问题描述:有一个 ...

  3. 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 ...

  4. ZOJ-1239 Hanoi Tower Troubles Again!

    链接:ZOJ1239 Hanoi Tower Troubles Again! Description People stopped moving discs from peg to peg after ...

  5. Hanoi问题

    #include<stdio.h>int main(){ int m; void hanoi(int n,char x,char y,char z); printf("input ...

  6. The Towers of Hanoi Revisited---(多柱汉诺塔)

    Description You all must know the puzzle named "The Towers of Hanoi". The puzzle has three ...

  7. Hanoi塔

    2016-03-19 17:01:35 问题描述: 假设有三个命名为 A B C 的塔座 ,在塔座A上插有n个直径大小不相同,由小到大编号为1 ,2 ,3 ,··· ,n的圆盘,要求将A座上的圆盘移至 ...

  8. [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 ...

  9. 栈应用hanoi

    /* 课本p54页*/ #include<stdio.h> #include <iostream> using namespace std; void move(int n, ...

随机推荐

  1. [代码]--给GridControl中的某列添加图片

    要让GridControl的某列显示图片只需要数据源中有图片就可以正确显示 1.给DataSet添加一列,格式为image ds.Tables[].Columns.Add("SIGN&quo ...

  2. 在VMware Workstation上安装Ubuntu 16.04 Server操作系统

    Ubuntu 16.04 Server的下载 http://www.ubuntu.org.cn/download/server 按空格键(Space)选中第一个ssh服务 成功!

  3. 【BZOJ1297】[SCOI2009]迷路(矩阵快速幂)

    [BZOJ1297][SCOI2009]迷路(矩阵快速幂) 题面 BZOJ 洛谷 题解 因为边权最大为\(9\),所以记录往前记录\(9\)个单位时间前的.到达每个点的方案数就好了,那么矩阵大小就是\ ...

  4. 【bzoj2754】 SCOI2012—喵星球上的点名

    http://www.lydsy.com/JudgeOnline/problem.php?id=2754 (题目链接) 题意 给出$n$个名字串,$m$个点名串,问对于每一个姓名串,它包含多少个点名串 ...

  5. C++ ------ const迭代器 和 const_iterator的区别

    const迭代器,顾名思义,就是不能改变的迭代器,是常量,其性质是由const决定的.比如说我们这样定义一个const迭代器. vector<,); const vector<int> ...

  6. Oracle DBMS_RANDOM

    DBMS_RANDOM.VALUE -- [0,1)的38位精度小数 SELECT DBMS_RANDOM.VALUE FROM DUAL; -- [10,20)的38位精度小数 SELECT DBM ...

  7. python---django中序列化

    def get_data(req): ret = {'status':True,'data':None} try: user_list = models.User.objects.all() ret[ ...

  8. bzoj千题计划237:bzoj1492: [NOI2007]货币兑换Cash

    http://www.lydsy.com/JudgeOnline/problem.php?id=1492 dp[i] 表示 第i天卖完的最大收益 朴素的dp: 枚举从哪一天买来的在第i天卖掉,或者是不 ...

  9. 阿里云centos7.3安装lamp环境

    参考文档:http://www.jb51.net/article/96649.htm http://m.blog.csdn.net/qq_33813365/article/details/766337 ...

  10. 作业:JavaScript(数组篇-poker)给我的徒弟出个题。。。记得早点写完,然后大家3人可以早点打牌了

    吐槽一下:“今天实际上我左思右想,写个什么东西好呢!手上的笔转了半天....最后还是给自己留点余地!看着他们什么酒店管理系统,呼叫中心系统之类的....简直是把自己固定死了!感觉一撸到底的感觉!!!我 ...