这道题暴力做法就是枚举每个起点,然后向后拓展到不能拓展

就像这样(红框是每个位置的取值范围,绿线是你取的值构成的折线)

应该可以发现,左端点往右移的过程中,右端点也只能不动或往右移,所以我们可以每次移动右端点,然后移动左端点直到合法

如果现在取出来了一个合法区间,加入下一个右端点,合法条件当且仅当当前区间右端所取的值不超过新加入的右端点的上界.所以我们可以在左端点右移的过程中,维护右边取值的变化(有点迷是不是)

我们可以开一个单调不降的单调队列维护区间内每个位置的取值到该位置的下界的大小,如果队首被弹出,那么区间内所有取值都可以下降队首元素大小那么多.那么在开个外部变量表示队列中元素的偏移量(参考P1486 [NOI2004]郁闷的出纳员,最好充分理解那道题,不然你就应该看不懂此篇题解)

具体参考代码 看不懂系列

// luogu-judger-enable-o2
#include<bits/stdc++.h>
#define il inline
#define re register
#define LL long long
#define max(a,b) ((a)>(b)?(a):(b))
#define inf 1111111111
namespace IO{...} //io读入模板,太长了,所以不放出来 using namespace std;
using namespace IO;
const int N=1000000+10;
int n,a[N][2],ans,hd=1,tl=0;
LL q[N][2],ff=0; int main()
{
Input(n);
for(re int i=1;i<=n;i++) Input(a[i][0]),Input(a[i][1]);
for(re int l=1,r=1,x=a[1][0];r<=n;r++)
{
while(l<r&&x>a[r][1])
{
if(hd<=tl&&q[hd][0]<=l) x-=q[hd][1]+ff,ff-=q[hd][1]+ff,++hd;
if(hd<=tl) x-=q[hd][1]+ff,ff-=q[hd][1]+ff; //这里似乎有点多余(雾)
++l;
}
if(hd>tl) x=-inf;
if(x<a[r][0]) x=a[r][0];
LL y=x-a[r][0]-ff;
while(hd<=tl&&y<q[tl][1]) --tl;
q[++tl][0]=r,q[tl][1]=y;
ans=max(ans,r-l+1);
}
Print(ans);
Flush();
return 0;
}

luogu P3522 [POI2011]TEM-Temperature的更多相关文章

  1. Luogu P3521 [POI2011]ROT-Tree Rotations

    题目链接 \(Click\) \(Here\) 线段树合并,没想到学起来意外的很简单,一般合并权值线段树. 建树方法和主席树一致,即动态开点.合并方法类似于\(FHQ\)的合并,就是把两棵树的信息整合 ...

  2. 【P3522】TEM(单调队列+DP)

    这个题,题目很长,然而亲爱的翻译已经帮你读完题了,一句话题意. 要求不下降的最长,那么这一段肯定满足队首的左区间不大于队尾的右区间,单调队列容易求解. #include<iostream> ...

  3. Luogu 3521 [POI2011]ROT-Tree Rotations

    BZOJ 2212 从下到上线段树合并. 考虑到每一个子树内部产生的贡献不可能通过换儿子消除,所以一次更换只要看看把哪个儿子放在左边产生的逆序对数少就可以了. 逆序对数可以在线段树合并的时候顺便算出来 ...

  4. Luogu P3527 [POI2011]MET-Meteors 整体二分

    思路:整体二分 提交:4次 错因:树状数组开的$int$ 题解: 二分操作序列,将仅用$[l,md]$即可满足要求的国家递归到左半边,将仅用$[l,md]$不能满足要求的国家,把他们的要求去掉左半边的 ...

  5. Luogu P3520 [POI2011]SMI-Garbage

    题目 把要变边权的边拿出来找欧拉回路就行了.正确性显然,因为一条边经过两次相当于对欧拉回路度数的奇偶性没有影响. 然后把一个个小环输出即可,具体的我也不知道怎么输,题目没讲清楚,我按着题解的来的. # ...

  6. python基础学习1-描述符

    #!/usr/bin/env python # -*- coding:utf-8 -*- #描述符就是将某种特殊类型的类的实例指派给另一个类的属性 #特殊类型指 实现了 # __get__(self, ...

  7. 在js中使用Razor

    @foreach (var tem in Model) { <text> time.push("@tem.CreateTime.ToString("G")&q ...

  8. BZOJ2276: [Poi2011]Temperature

    2276: [Poi2011]Temperature Time Limit: 20 Sec  Memory Limit: 32 MBSubmit: 293  Solved: 117[Submit][S ...

  9. [POI2011]Temperature

    Description The Byteotian Institute of Meteorology (BIM) measures the air temperature daily. The mea ...

随机推荐

  1. python---str和repr

    在 Python 中要将某一类型的变量或者常量转换为字符串对象通常有两种方法,即 str() 或者 repr() . 区别与使用 函数str() 用于将值转化为适于人阅读的形式,而repr() 转化为 ...

  2. Unsupported major.minor version ... JDK具体对应版本

    java.lang.UnsupportedClassVersionError: hudson/remoting/Launcher : Unsupported major.minor version 5 ...

  3. BZOJ2049[Sdoi2008]洞穴勘测——LCT

    题目描述 辉辉热衷于洞穴勘测.某天,他按照地图来到了一片被标记为JSZX的洞穴群地区.经过初步勘测,辉辉发现这片区域由n个洞穴(分别编号为1到n)以及若干通道组成,并且每条通道连接了恰好两个洞穴.假如 ...

  4. BZOJ3417[Poi2013]Tales of seafaring——BFS

    题目描述 Young Bytensson loves to hang out in the port tavern, where he often listens to the sea dogs te ...

  5. MT【68】一边柯西一边舍弃

    求$\sqrt{x-5}+\sqrt{24-3x}$的最值. 通常考试时会考你求最大值,常见的方式有三角代换,这里给如下做法: 证明:$\sqrt{x-5}+\sqrt{24-3x}=\sqrt{x- ...

  6. Deep Learning(深度学习)学习笔记整理系列二

    声明: 1)该Deep Learning的学习系列是整理自网上很大牛和机器学习专家所无私奉献的资料的.具体引用的资料请看参考文献.具体的版本声明也参考原文献. 2)本文仅供学术交流,非商用.所以每一部 ...

  7. Python的二叉树实现

    二叉树需要实现的功能及思路 找到最小值 没什么好说的就是二叉树最左下的顶点 找到最大值 没什么好说的就是二叉树最右下的顶点 插入 分情况,如果二叉树为空那么直接直接设置成根节点就好了.否则就逐层向下, ...

  8. js的==和===练习

    今天检查了一下JS的== 和===的区别 如下: 表达式                              值 1==true  true 1===true  false 0==false t ...

  9. bzoj1002/luogu2144 轮状病毒 (dp)

    给周围的点编号1到n 我们设f[i]为(1到i和中间点)连成一个联通块的情况数,那么有$f[i]=\sum{f[i-j]*j}$,就是从i-j+1到i里选一个连到中心,然后再把i-j+1到i连成链 但 ...

  10. 【bzoj3532】 Sdoi2014—Lis

    http://www.lydsy.com/JudgeOnline/problem.php?id=3532 (题目链接) 题意 给出$n$个数的数列,三个值$a[i],b[i],c[i]$.将其中一些数 ...