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 MD5Util
package util; import java.security.MessageDigest; public class MD5Util { public static String strin ...
- Bootstrap手风琴效果
前面的话 Bootstrap 框架中 Collapse插件(折叠)其实就是我们常见的手风琴效果.当单击一个触发元素时,在另外一个可折叠区域进行显示或隐藏,再次单击时可以反转显示状态.经典的场景是多个折 ...
- BZOJ3282Tree——LCT
题目描述 给定N个点以及每个点的权值,要你处理接下来的M个操作. 操作有4种.操作从0到3编号.点从1到N编号. 0:后接两个整数(x,y),代表询问从x到y的路径上的点的权值的xor和. 保证x到y ...
- BZOJ1785[USACO 2010 Jan Gold 3.Cow Telephones]——贪心
题目描述 奶牛们建立了电话网络,这个网络可看作为是一棵无根树连接n(1 n 100,000)个节点,节点编号为1 .. n.每个节点可能是(电话交换机,或者电话机).每条电话线连接两个节点.第i条电话 ...
- BZOJ4516 SDOI2016生成魔咒(后缀数组+平衡树)
一个字符串本质不同的子串数量显然是总子串数减去所有height值.如果一个个往里加字符的话,每次都会改动所有后缀完全没法做.但发现如果从后往前加的话,每次只会添加一个后缀.于是我们把字符串倒过来,每次 ...
- 【BZOJ2671】Calc(莫比乌斯反演)
[BZOJ2671]Calc 题面 BZOJ 给出N,统计满足下面条件的数对(a,b)的个数: 1.\(1\le a\lt b\le N\) 2.\(a+b\)整除\(a*b\) 我竟然粘了题面!!! ...
- django MTV架构下的网站开发步骤
1.需求分析必不可少,一定要具体列出本次网站项目所要实现的目标,可能包括简单的页面草图与功能方块图等. 2.数据库设计. 3.了解网站的每一个页面,并设计网页模板(.html)文件 4.使用virtu ...
- NinePatch图片
绍 参考 :http://blog.sina.com.cn/s/blog_5033827f0100r4dm.html NinePatch图片以*.9.png结尾,和普通图片的区别是四周多了一个边框(如 ...
- Codeforces Round #548
没打,简单补档 C.Edgy Trees 容斥,把黑边断掉数联通块,每个联通块贡献$siz^k$ #include<cstdio> #include<cstring> #inc ...
- 洛谷P4843 清理雪道
题意:给你DAG,求最小路径边覆盖.路径可重. 解:首先可以想到边转点,发现有n²条边,果断超时. 有源汇有上下界最小流. 建图:每条边都建立一条边,流量限制为[1, 1]. 源点向每个点连边,因为都 ...