luogu P3522 [POI2011]TEM-Temperature
这道题暴力做法就是枚举每个起点,然后向后拓展到不能拓展
就像这样
(红框是每个位置的取值范围,绿线是你取的值构成的折线)
应该可以发现,左端点往右移的过程中,右端点也只能不动或往右移,所以我们可以每次移动右端点,然后移动左端点直到合法
如果现在取出来了一个合法区间,加入下一个右端点,合法条件当且仅当当前区间右端所取的值不超过新加入的右端点的上界.所以我们可以在左端点右移的过程中,维护右边取值的变化(有点迷是不是)
我们可以开一个单调不降的单调队列维护区间内每个位置的取值到该位置的下界的大小,如果队首被弹出,那么区间内所有取值都可以下降队首元素大小那么多.那么在开个外部变量表示队列中元素的偏移量(参考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的更多相关文章
- Luogu P3521 [POI2011]ROT-Tree Rotations
题目链接 \(Click\) \(Here\) 线段树合并,没想到学起来意外的很简单,一般合并权值线段树. 建树方法和主席树一致,即动态开点.合并方法类似于\(FHQ\)的合并,就是把两棵树的信息整合 ...
- 【P3522】TEM(单调队列+DP)
这个题,题目很长,然而亲爱的翻译已经帮你读完题了,一句话题意. 要求不下降的最长,那么这一段肯定满足队首的左区间不大于队尾的右区间,单调队列容易求解. #include<iostream> ...
- Luogu 3521 [POI2011]ROT-Tree Rotations
BZOJ 2212 从下到上线段树合并. 考虑到每一个子树内部产生的贡献不可能通过换儿子消除,所以一次更换只要看看把哪个儿子放在左边产生的逆序对数少就可以了. 逆序对数可以在线段树合并的时候顺便算出来 ...
- Luogu P3527 [POI2011]MET-Meteors 整体二分
思路:整体二分 提交:4次 错因:树状数组开的$int$ 题解: 二分操作序列,将仅用$[l,md]$即可满足要求的国家递归到左半边,将仅用$[l,md]$不能满足要求的国家,把他们的要求去掉左半边的 ...
- Luogu P3520 [POI2011]SMI-Garbage
题目 把要变边权的边拿出来找欧拉回路就行了.正确性显然,因为一条边经过两次相当于对欧拉回路度数的奇偶性没有影响. 然后把一个个小环输出即可,具体的我也不知道怎么输,题目没讲清楚,我按着题解的来的. # ...
- python基础学习1-描述符
#!/usr/bin/env python # -*- coding:utf-8 -*- #描述符就是将某种特殊类型的类的实例指派给另一个类的属性 #特殊类型指 实现了 # __get__(self, ...
- 在js中使用Razor
@foreach (var tem in Model) { <text> time.push("@tem.CreateTime.ToString("G")&q ...
- BZOJ2276: [Poi2011]Temperature
2276: [Poi2011]Temperature Time Limit: 20 Sec Memory Limit: 32 MBSubmit: 293 Solved: 117[Submit][S ...
- [POI2011]Temperature
Description The Byteotian Institute of Meteorology (BIM) measures the air temperature daily. The mea ...
随机推荐
- java程序在windows系统作为服务程序运行
Java程序很多情况下是作为服务程序运行的,在Un*x 平台下可以利用在命令后加“&”把程序作为后台服务运行,但在Windows下看作那个Console窗口在桌面上,你是否一直担心别的同时把你 ...
- resharper license server
2018-5-14更新 http://jetbrains-a.pw good 2018-4-17 更新 http://jetbrains.tools bad 144.202.4.96 good 201 ...
- Visual Studio 2017各版本安装包离线下载、安装全解析
关于Visual Studio 2017各版本安装包离线下载.更新和安装的方法以及通过已下载版本减少下载量的办法 微软最近发布了正式版Visual Studio 2017并公开了其下载方式,不过由于V ...
- python面对对象编程中会用到的装饰器
1.property 用途:用来将对像的某个方法伪装成属性来提高代码的统一性. class Goods: #商品类 discount = 0.8 #商品折扣 def __init__(self,nam ...
- HTML-封装原生Ajax
function ajax(data){ //data{data:"",dataType:"xml/json",type:"get/post" ...
- BZOJ4502串——AC自动机(fail树)
题目描述 兔子们在玩字符串的游戏.首先,它们拿出了一个字符串集合S,然后它们定义一个字 符串为“好”的,当且仅当它可以被分成非空的两段,其中每一段都是字符串集合S中某个字符串的前缀. 比如对于字符串集 ...
- BZOJ3456 城市规划(多项式求逆)
设f[i]为连通图的数量,g[i]为不连通图的数量,显然有f[i]=2i*(i-1)/2-g[i],g[i]通过枚举1所在连通块大小转移,有g[i]=Σf[j]*C(i-1,j-1)·2(i-j)*( ...
- DeBruijin HDU - 2894(????????)
题意: 莫名其妙 看不懂..只能靠别人的题意混日子 a完就懂了 就是 POJ1392 不求第k个了 直接输出这个路径 emm ...就改了一下那个代码 #include <iostream ...
- Sublime text3 插件LiveReload 实现实时预览
1.首先要安装插件LiveReload Sublime text3. 菜单 preferences->packages control,输入install.. 回车,输入LiveReload回车 ...
- 洛谷 P2596 [ZJOI2006]书架 解题报告
P2596 [ZJOI2006]书架 题目描述 小T有一个很大的书柜.这个书柜的构造有些独特,即书柜里的书是从上至下堆放成一列.她用1到n的正整数给每本书都编了号. 小T在看书的时候,每次取出一本书, ...