cdoj 秋实大哥与战争
首先,显然每个区间的最长连续子区间要么在左孩子里,要么在右孩子里,要么跨越两个孩子。于是我们可以对每个区间维护如下信息ll(left long),rl(rigth long),ml(mid long)分别表示前缀最长长度,后缀最长长度,中间的最长区间长度,并维护即可。
#include<cstdio>
#include<iostream>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<cstdlib>
#include<queue>
#include<vector>
#include<map>
#include<stack>
#include<string> using namespace std; struct Tree{
int l,r;
int ll,rl,ml;
}; int n,m;
Tree T[]; void buildtree(int now,int l,int r){
T[now].ll=T[now].rl=T[now].ml=r-l+;
T[now].l=l;
T[now].r=r;
if (l==r) return;
buildtree(now<<,l,(l+r)>>);
buildtree((now<<)|,((l+r)>>)+,r);
} void update(int now,int aim,int val){
if (T[now].l==T[now].r){
T[now].ll=T[now].rl=T[now].ml=val;
return;
}
int mid=(T[now].l+T[now].r)>>;
if (aim<=mid) update(now<<,aim,val);
else update((now<<)|,aim,val);
T[now].ll=T[now<<].ll;
T[now].rl=T[(now<<)|].rl;
if (T[now<<].ll==(T[now<<].r-T[now<<].l+)) T[now].ll=T[now].ll+T[(now<<)|].ll;
if (T[(now<<)|].rl==T[(now<<)|].r-T[(now<<)|].l+) T[now].rl+=T[now<<].rl;
T[now].ml=max(T[now<<].ml,T[(now<<)|].ml);
T[now].ml=max(T[now].ml,T[now<<].rl+T[(now<<)|].ll);
} int query(int now,int aim){
if (T[now].l==T[now].r || T[now].ml== || T[now].ml==T[now].r-T[now].l+){
return T[now].ml;
}
int mid=(T[now].l+T[now].r)>>;
if (aim<=mid){
if (aim>=T[now<<].r-T[now<<].rl+)
return query(now<<,aim)+query((now<<)|,mid+);
else
return query(now<<,aim);
}
else{
if (aim<=T[(now<<)|].l+T[(now<<)|].ll-)
return query((now<<)|,aim)+query(now<<,mid);
else
return query((now<<)|,aim);
}
} int main(){
scanf("%d%d",&n,&m);
buildtree(,,n);
for (int cas=;cas<=m;cas++){
int f,x;
scanf("%d%d",&f,&x);
if (f==){
update(,x,);
}
if (f==){
update(,x,);
}
if (f==){
printf("%d\n",query(,x));
}
checktree(,,n);
}
return ;
}
/*
5 3
2 2
0 3
2 2 5 5
2 2
0 3
2 2
1 3
2 2
*/
cdoj 秋实大哥与战争的更多相关文章
- CDOJ 1061 C - 秋实大哥与战争 STL set 迭代器
题目链接: C - 秋实大哥与战争 Time Limit:1000MS Memory Limit:65535KB 64bit IO Format:%lld & %llu Sub ...
- UESTC_秋实大哥与战争 2015 UESTC Training for Data Structures<Problem D>
D - 秋实大哥与战争 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Subm ...
- 2015 UESTC 数据结构专题D题 秋实大哥与战争 SET的妙用
D - 秋实大哥与战争 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/59 D ...
- 2015 UESTC 数据结构专题D题 秋实大哥与战争 变化版本的线段树,合并区间,单点查询
D - 秋实大哥与战争 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/59 D ...
- UESTC 1061 秋实大哥与战争 线段树区间合并
秋实大哥与战争 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) 男儿何不带吴钩, ...
- E - 秋实大哥与战争
秋实大哥与战争 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit S ...
- cdoj 秋实大哥搞算数
地址:http://acm.uestc.edu.cn/#/contest/show/95 题目: N - 秋实大哥搞算数 Time Limit: 3000/1000MS (Java/Others) ...
- cdoj 秋实大哥带我飞 最短路走法 含0权边
//做完这题以后终于理解白书上的边为什么要那样定义了 可以很方便的在o(1) 时间内找到反向边 解法:先跑一边最短路,然后检查最短路上有没有0权边(dfs就好,但是每条边只能走一次,这里就需要用异或找 ...
- CDOJ 1146 A - 秋实大哥与连锁快餐店 最小生成树 Prim算法 稠密图
题目链接 A - 秋实大哥与连锁快餐店 Time Limit:3000MS Memory Limit:65535KB 64bit IO Format:%lld & %llu S ...
随机推荐
- java学习:AWT组件和事件处理的笔记(1)--Frame
1.java的抽象窗口工具包(AWT)中包含了许多类来支持GUI设计2.AWT由java的java.awt包提供3.再进行GUI编程时,要理解:容器类(Container),组件(component) ...
- webpack图片的路径与打包
转的http://www.cnblogs.com/ghost-xyx/p/5812902.html 今天写 react遇到打包图片,之前都是通过url在css里,没遇到问题,今天在 react里直接用 ...
- 阿里云CentOS 7.1使用yum安装MySql5.6.24
正确的安装方法: 众所周知,Linux系统自带的repo是不会自动更新每个软件的最新版本(基本都是比较靠后的稳定版),所以无法通过yum方式安装MySQL的高级版本.所以我们需要先安装带有当前可用的m ...
- 浅析 C++里面的宏
说到宏,恐怕大家都能说出点东西来:一种预处理,没有分号(真的吗?).然后呢?嗯.......茫然中......好吧,我们就从这开始说起.最常见的宏恐怕是#include 了,其次就是#define 还 ...
- SQL Server 2008数据库的一些基本概念 区、页、行
原文地址:http://www.cnblogs.com/liuzhendong/archive/2011/10/11/2207361.html 以前总是没弄明白这些基本概念,现在整理如下: 1.区: ...
- MarkDown基础使用教程-by sixleaves
以下是个人浏览文档,结合自己平时使用所总结, 和引用国外关于如何使用markdown的教程.如有不足,还请海涵,期待于您的交流.我觉得使用markdown书写挺好的! 工具下载,可以去下载gitboo ...
- 【hihocoder 1258 Osu! Master】
2015北京区域赛现场赛签到题. 题面:http://media.hihocoder.com/contests/icpcbeijing2015/problems.pdf OJ链接:http://hih ...
- #include <boost/function.hpp>
为atoi取别名fun,fun实质上是函数指针 #include <iostream> #include <boost/function.hpp> void main() { ...
- (转)js prototype 详解
转载自:http://blog.csdn.net/chaojie2009/article/details/6719353(也是转载的.鄙视一下此人转载不著名出处.) 注意:必须带着怀疑的态度去看这篇文 ...
- javascript的几种时间格式
1.当前系统区域设置格式(toLocaleDateString和toLocaleTimeString) 例子:(new Date()).toLocaleDateString() + " &q ...