一两个月没写代码的确是手生的厉害,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;
}

最新文章

  1. mount什么意思
  2. HTML5+NodeJs实现WebSocket即时通讯
  3. subprocess使用
  4. 理论沉淀:RANSAC算法
  5. 手机版和PC版识别
  6. javaSE_08Java中static、继承、重写
  7. Python之print字典
  8. bzoj usaco 金组水题题解(2)
  9. mysql中find_in_set的使用
  10. Python mysql 创建连接
  11. Thinkphp 去除bom头 解决模版空输出问题
  12. [BZOJ4044]Virus synthesis 回文自动机的DP
  13. BRIEF特征点描述子
  14. 51Nod 1596 搬货物
  15. DOM练手讲解
  16. IOS-百度地图API用点生成线路、导航、自定义标注 2013年11月更新
  17. java实现链队列
  18. Android 4 学习(18):搜索
  19. Python中函数的参数-arguments
  20. 51nod 1554:欧姆诺姆和项链——题解

热门文章

  1. 创业笔记-Node.js入门之JavaScript与Node.js
  2. ASP.NET-Session与复杂数据类型
  3. magento megatron主题加入中文
  4. extjs动态导入
  5. Android上方便地开发的C程序
  6. hdoj--1010--Tempter of the Bone(搜索+奇偶剪枝)
  7. android之handler机制深入解析
  8. LCD段码驱动
  9. 批量kill 某个用户session
  10. 并发设计模式之Guarded Suspension模式