一两个月没写代码的确是手生的厉害,debug的好艰辛,,不过看到accept时的那种满足感真的就是爽

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
using namespace std;
const int maxn=111111;
int rnum[maxn<<2],lnum[maxn<<2];
int len[maxn<<2],rlen[maxn<<2],llen[maxn<<2];
int lmmax,mmax,lln;
void pushUp(int rt,int m)
{
llen[rt]=llen[rt<<1],rlen[rt]=rlen[rt<<1|1];
lnum[rt]=lnum[rt<<1],rnum[rt]=rnum[rt<<1|1];
int tem=0;
if(rnum[rt<<1]<lnum[rt<<1|1])
tem=rlen[rt<<1]+llen[rt<<1|1];
if(llen[rt]==m-(m>>1)&&lnum[rt<<1|1]>rnum[rt<<1])
llen[rt]+=llen[rt<<1|1];
if(rlen[rt]==m>>1&&lnum[rt<<1|1]>rnum[rt<<1])
rlen[rt]+=rlen[rt<<1];
len[rt]=max(max(llen[rt],max(rlen[rt],tem)),max(len[rt<<1],len[rt<<1|1]));
}
void build(int l,int r,int rt)
{
if(l==r)
{
len[rt]=rlen[rt]=llen[rt]=1;
int a;
scanf("%d",&a);
rnum[rt]=lnum[rt]=a;
return;
}
int m=(l+r)>>1;
build(lson);
build(rson);
pushUp(rt,r-l+1);
}
void update(int L,int d,int l,int r,int rt)
{
if(l==r)
{
lnum[rt]=rnum[rt]=d;
return ;
}
int m=(l+r)>>1;
if(m>=L) update(L,d,lson);
else update(L,d,rson);
pushUp(rt,r-l+1);
}
void query(int L,int R,int l,int r,int rt)
{
if(L<=l&&R>=r)
{
int a=0;
if(lln<lnum[rt])
{
a=lmmax+llen[rt];
}
if(llen[rt]==r-l+1&&lln<lnum[rt])
lmmax=lmmax+llen[rt];
else
lmmax=rlen[rt];
lln=rnum[rt];
mmax=max(max(mmax,a),len[rt]);
return;
}
int m=(l+r)>>1;
if(L<=m)
query(L,R,lson);
if(R>m)
query(L,R,rson);
return;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n,m;
scanf("%d%d",&n,&m);
build(1,n,1);
char op[3];
int a,b;
while(m--){
scanf("%s%d%d",op,&a,&b);
a++;
if(op[0]=='Q')
{
b++;
lmmax=0;mmax=1,lln=99999999;
query(a,b,1,n,1);
printf("%d\n",mmax);
}
else update(a,b,1,n,1);
}
}
return 0;
}

hdu_3308 区间合并的更多相关文章

  1. POJ 3667 Hotel(线段树 区间合并)

    Hotel 转载自:http://www.cnblogs.com/scau20110726/archive/2013/05/07/3065418.html [题目链接]Hotel [题目类型]线段树 ...

  2. HDU 3911 线段树区间合并、异或取反操作

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=3911 线段树区间合并的题目,解释一下代码中声明数组的作用: m1是区间内连续1的最长长度,m0是区间内连续 ...

  3. HDU 1540 Tunnel Warfare 平衡树 / 线段树:单点更新,区间合并

    Tunnel Warfare                                  Time Limit: 4000/2000 MS (Java/Others)    Memory Lim ...

  4. HDU 3911 Black And White(线段树区间合并+lazy操作)

    开始以为是水题,结果...... 给你一些只有两种颜色的石头,0为白色,1为黑色. 然后两个操作: 1 l r 将[ l , r ]内的颜色取反 0 l r 计算[ l , r ]内最长连续黑色石头的 ...

  5. POJ 2750 Potted Flower (线段树区间合并)

    开始懵逼找不到解法,看了网上大牛们的题解才发现是区间合并...  给你n个数形成一个数列环,然后每次进行一个点的修改,并输出这个数列的最大区间和(注意是环,并且区间最大只有n-1个数) 其实只需要维护 ...

  6. ACM: Hotel 解题报告 - 线段树-区间合并

    Hotel Time Limit:3000MS     Memory Limit:65536KB     64bit IO Format:%lld & %llu Description The ...

  7. HDU 1540 Tunnel Warfare(线段树+区间合并)

    http://acm.hdu.edu.cn/showproblem.php?pid=1540 题目大意:抗日战争期间进行地道战,存在n个村庄用地道连接,输入D表示破坏某个村庄(摧毁与其相连的地道, 包 ...

  8. POJ 2892 Tunnel Warfare(线段树单点更新区间合并)

    Tunnel Warfare Time Limit: 1000MS   Memory Limit: 131072K Total Submissions: 7876   Accepted: 3259 D ...

  9. [HDOJ3308]LCIS(线段树,区间合并)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3308 题意:给定n个数,两个操作: U A B:将位置A的数值改成B Q A B:查询[A,B]内最长 ...

随机推荐

  1. 洛谷 P2071 座位安排 seat.cpp/c/pas

    P2071 座位安排 seat.cpp/c/pas 题目背景 公元二零一四年四月十七日,小明参加了省赛,在一路上,他遇到了许多问题,请你帮他解决. 题目描述 已知车上有N排座位,有N*2个人参加省赛, ...

  2. ZOJ 3687

    赤裸的带禁区的排列数,不过,难点在于如何用程序来写这个公式了.纠结了好久没想到,看了看别人的博客,用了DFS,实在妙极,比自己最初想用枚举的笨方法高明许多啊.\ http://blog.csdn.ne ...

  3. POI 导入excel数据自己主动封装成model对象--代码分析

    上完代码后,对代码进行基本的分析: 1.主要使用反射api将数数据注入javabean对象 2.代码中的日志信息级别为debug级别 3.获取ExcelImport对象后须要调用init()方法初始化 ...

  4. JS,Javascript加载与函数执行过程

    Js,Javascript加载与函数执行过程 test.html <!DOCTYPE HTML> <html lang="en"> <head> ...

  5. spring中bean标签factory-method和factory-bean)详解工厂方法(factory-method和factory-bean)

    转自:http://blog.sina.com.cn/s/blog_6d3c1ec601019f3j.html A.factory-method The name of a factory metho ...

  6. HTTP学习记录

    title: HTTP学习记录 toc: true date: 2018-09-21 20:40:48 HTTP协议,HyperText Transfer Protocol,超文本传输协议,是因特网上 ...

  7. python 3.x 学习笔记9 (面向对象)

    1.面向对象 面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物. 2.类(class): 一个类即是对一类拥有相同属性的对象的抽象.蓝图.原型.在类中定义了这些对象的都 ...

  8. PostgreSQL 索引膨胀

    索引膨胀,主要针对B-tree而言 索引膨胀的几个来源: 大量删除发生后,导致索引页面稀疏,降低了索引的使用效率: PG9.0之前的版本,vacuum full会同样导致索引页面稀疏: 长时间运行的事 ...

  9. 阿里云ecs : Couldn't connect to host, port: smtp.aliyun.com, 25; timeout -1;

    上传到服务器后javamail发邮件异常 链接 原来是ECS基于安全考虑,禁用了端口25. 改成465就可以发邮件了. p.setProperty("mail.smtp.socketFact ...

  10. 找出 alter system kill session ‘sid,serial#’ kill 掉的数据库会话对应进程

    当我们使用alter system kill session ‘sid,serial#’ 在数据库中kill掉某个会话的时候,如果你观察仔细会发现v$session.paddr发生了改变,从而是的不能 ...