hdu1540 线段树之区间左右连续询问
来源:互联网 发布:mac docker 仓库地址 编辑:程序博客网 时间:2024/05/01 03:56
水题
ACcode:
#include<stdio.h>#include<iostream>using namespace std;const int size=55555;struct Node{ int len,lc,rc;} tre[size<<2];void build(int rt,int l,int r){ tre[rt].lc=tre[rt].rc=tre[rt].len=r-l+1; if (l==r) return ; int m=(l+r)>>1; build(rt<<1,l,m); build(rt<<1|1,m+1,r);}void PushUp(int rt){ int r1=rt<<1,r2=r1|1; tre[rt].lc=tre[r1].lc; if (tre[r1].lc==tre[r1].len) tre[rt].lc+=tre[r2].lc; tre[rt].rc=tre[r2].rc; if (tre[r2].rc==tre[r2].len) tre[rt].rc+=tre[r1].rc;}void update(int rt,int l,int r,int p,int v){ if (l==r) { tre[rt].lc=tre[rt].rc=v; return ; } int m=(l+r)>>1; if (p<=m) update(rt<<1,l,m,p,v); else update(rt<<1|1,m+1,r,p,v); PushUp(rt);}Node query(int rt,int l,int r,int p){ if (l==r) return tre[rt]; Node tmp; int m=(l+r)>>1,f; int r1=rt<<1,r2=r1|1; if (p<=m) f=1,tmp=query(r1,l,m,p); else f=2,tmp=query(r2,m+1,r,p); if (f==1&&(p+tmp.rc-1)>=m) tmp.rc=m-p+1+tre[r2].lc; else if (f==2&&(p-tmp.lc)<=m) tmp.lc=p-m+tre[r1].rc; return tmp;}int main(){ char op[5]; int n,q,pos,top; int vage[size]; while (~scanf("%d %d",&n,&q)) { top=0; build(1,1,n); while (q--) { scanf("%s",op); if (op[0]=='R') { pos=vage[--top]; while (vage[top-1]==pos) top--; update(1,1,n,pos,1); } else { scanf("%d",&pos); if (op[0]=='D') { vage[top++]=pos; update(1,1,n,pos,0); } else { Node tmp=query(1,1,n,pos); printf("%d\n",tmp.lc>0?(tmp.lc+tmp.rc-1):0); } } } } return 0;}
- hdu1540 线段树之区间左右连续询问
- HDU1540--线段树(最长连续区间)
- hdu1540(线段树求连续区间最大和)
- hdu1540 线段树区间合并
- hdu1540线段树区间合并
- hdu1540(线段树区间合并)
- hdu1540之线段树单点更新+区间合并
- poj 2892 hdu1540 线段树 求过某点的最大连续区间。
- HDU1540:Tunnel Warfare(线段树区间合并)
- hdu1540 Tunnel Warfare 线段树区间合并
- HDU1540-Tunnel Warfare-线段树区间合并
- hdu1540(线段树区间合并)
- hdu1540 Tunnel Warfare 线段树区间合并
- HDU1540 Tunnel Warfare (线段树区间合并)
- hdu1540-Tunnel Warfare 线段树区间合并
- HDU1540 Tunnel Warfare(线段树,区间合并)
- HDU1540 Tunnel Warfare (线段树区间合并)
- HDU1540 Tunnel Warfare(线段树+区间合并)
- 程序员如何保持优秀 转
- Oracle latch:library cache 导致 数据库挂起 故障
- Expression Blend实例中文教程系列文章汇总
- 在windows 7 上为 sqlserver 2008 启用远程访问
- 到底在哪个数据上被坑了 。。。NYOJ 104
- hdu1540 线段树之区间左右连续询问
- Hibernate 检索策略
- win7 防火墙开启ping
- c++对象序列化初步探讨
- 软件开发设计阶段
- 修复jQuery Autocomplete在FF中不支持中文的BUG
- 递归实现十进制到n[2, 10]进制转换
- jQuery的Select一些常用操作集合
- 【2012/9/23~2012/9/25】 编程规范之命名原则(附9.28的变量不用L原则)