HDU 3308 LCIS
来源:互联网 发布:初学java看什么书好 编辑:程序博客网 时间:2024/05/01 20:11
#include "cstdio"#include "algorithm"using namespace std;#define maxn 111111#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1int a[maxn];int lmax[maxn<<2],rmax[maxn<<2],mmax[maxn<<2];void pushup(int l,int r,int rt){ int m=(l+r)>>1; lmax[rt]=lmax[rt<<1]; rmax[rt]=rmax[rt<<1|1]; mmax[rt]=max(mmax[rt<<1],mmax[rt<<1|1]); if(a[m]<a[m+1]){ if(lmax[rt]==m-l+1) lmax[rt]+=lmax[rt<<1|1]; if(rmax[rt]==r-m) rmax[rt]+=rmax[rt<<1]; mmax[rt]=max(mmax[rt],rmax[rt<<1]+lmax[rt<<1|1]); }}void build(int l,int r,int rt){ if(l==r){ lmax[rt]=rmax[rt]=mmax[rt]=1; return; } int m=(l+r)>>1; build(lson); build(rson); pushup(l,r,rt);}void update(int p,int v,int l,int r,int rt){ if(l==r){ a[p]=v; return; } int m=(l+r)>>1; if(p<=m) update(p,v,lson); else update(p,v,rson); pushup(l,r,rt);}int query(int L,int R,int l,int r,int rt){ if(L<=l&&r<=R){ return mmax[rt]; } int m=(l+r)>>1; int ans=0; if(L<=m) ans=max(ans,query(L,R,lson)); if(R>m) ans=max(ans,query(L,R,rson)); if(a[m+1]>a[m]){ ans= max(ans,min(m-L+1,rmax[rt<<1])+min(R-m,lmax[rt<<1|1]) ); } return ans;}int main(){ int t; int x,y; char s[5]; scanf("%d",&t); while(t--){ int n,m; scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) scanf("%d",&a[i]); build(1,n,1); while(m--){ scanf("%s",s); if(s[0]=='Q'){ scanf("%d%d",&x,&y); x++,y++; printf("%d\n",query(x,y,1,n,1)); }else{ scanf("%d%d",&x,&y); x++; update(x,y,1,n,1); } } } return 0;}
0 0
- hdu 3308 LCIS
- hdu 3308 LCIS
- HDU 3308(LCIS)
- hdu 3308 LCIS
- Hdu 3308 LCIS
- hdu(3308)LCIS
- HDU 3308 LCIS
- hdu 3308 LCIS
- HDU 3308 LCIS
- HDU 3308 LCIS
- HDU 3308 LCIS
- HDU-3308-LCIS
- HDU 3308 LCIS
- hdu 3308 LCIS
- HDU-3308 LCIS
- HDU 3308 LCIS
- hdu 3308 LCIS
- HDU 3308 LCIS
- mysql comment以及修改字段顺序
- 硬盘检测 - MegaCli
- robotium android 自动化UI测试获取控件是否隐藏的属性
- 在 Eclipse PHP 中配置 XDebug 详解
- 浅谈“戒色”与“慎独”
- HDU 3308 LCIS
- 命名空间概述
- Interview
- c++ primer plus(二)std
- SQL 语法参考手册(SQL)/数据类型
- PHP的反射机制
- java线程池
- Xcode5离线安装IOS6、IOS5模拟器
- HDU 4217 Data Structure?