http://poj.org/problem?id=2892

 #include <cstdio>
#include <cstring>
#include <algorithm>
#define maxn 51000
using namespace std; int stack1[maxn],top;
struct node
{
int l,r;
int len,ren;
}p[maxn*]; void up(int i)
{
p[i].len=p[i<<].len; p[i].ren=p[i<<|].ren;
if(p[i<<].len==(p[i<<].r-p[i<<].l+))
p[i].len+=p[i<<|].len;
if(p[i<<|].ren==(p[i<<|].r-p[i<<|].l+))
p[i].ren+=p[i<<].ren;
}
void build_tree(int i,int l,int r)
{
p[i].l=l; p[i].r=r;
if(l==r)
{
p[i].len=p[i].ren=;
return ;
}
int mid=(l+r)>>;
build_tree(i<<,l,mid);
build_tree(i<<|,mid+,r);
up(i);
} void update(int id,int i,int oper)
{
if(p[i].l==p[i].r)
{
p[i].len=p[i].ren=oper;
return;
}
int mid=(p[i].l+p[i].r)>>;
if(id<=mid)
update(id,i<<,oper);
else
update(id,i<<|,oper);
up(i);
} int search1(int id,int i)
{
if(p[i].l==p[i].r)
return p[i].len;
int mid=(p[i].l+p[i].r)>>;
if(id<=mid)
{
if(p[i<<].r-p[i<<].ren+<=id)
return p[i<<].ren+p[i<<|].len;
else
search1(id,i<<);
}
else
{
if(p[i<<|].len+p[i<<|].l->=id)
return p[i<<].ren+p[i<<|].len;
else
search1(id,i<<|);
}
} int main()
{
int n,q,a;
while(scanf("%d%d",&n,&q)!=EOF)
{
build_tree(,,n);
top=;
getchar();
while(q--)
{
char ch;
scanf("%c",&ch);
if(ch=='D')
{
scanf("%d",&a);
update(a,,);
stack1[top++]=a;
}
else if(ch=='Q')
{
scanf("%d",&a);
printf("%d\n",search1(a,));
}
else if(ch=='R')
{
if(top>)
{
update(stack1[--top],,);
}
}
getchar();
}
}
return ;
}

poj 2892 &&hdu 1540 Tunnel Warfare的更多相关文章

  1. HDU 1540 Tunnel Warfare(最长连续区间 基础)

    校赛,还有什么途径可以申请加入ACM校队?  Tunnel Warfare Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/ ...

  2. hdu 1540 Tunnel Warfare (区间线段树(模板))

    http://acm.hdu.edu.cn/showproblem.php?pid=1540 Tunnel Warfare Time Limit: 4000/2000 MS (Java/Others) ...

  3. hdu 1540 Tunnel Warfare 线段树 单点更新,查询区间长度,区间合并

    Tunnel Warfare Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pi ...

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

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

  5. hdu 1540 Tunnel Warfare(线段树区间统计)

    Tunnel Warfare Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) T ...

  6. hdu 1540 Tunnel Warfare 线段数区间合并

    Tunnel Warfare Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) P ...

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

    Tunnel Warfare 题意:D代表破坏村庄,R代表修复最后被破坏的那个村庄,Q代表询问包括x在内的最大连续区间是多少 思路:一个节点的最大连续区间由(左儿子的最大的连续区间,右儿子的最大连续区 ...

  8. hdu 1540 Tunnel Warfare (线段树 区间合并)

    Tunnel Warfare Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)To ...

  9. HDU 1540 Tunnel Warfare

    HDU 1540 思路1: 树状数组+二分 代码: #include<bits/stdc++.h> using namespace std; #define ll long long #d ...

随机推荐

  1. mysql主从复制 详解

    转自 http://blog.csdn.net/m582445672/article/details/7731565 实践: http://shiyanjun.cn/archives/584.html ...

  2. 看小白如何解决ajax跨域问题

    由于此前很少写前端的代码(哈哈,不合格的程序员啊),最近项目中用到json作为系统间交互的手段,自然就伴随着众多ajax请求,随之而来的就是要解决ajax的跨域问题.本篇将讲述一个小白从遇到跨域不知道 ...

  3. POJ 2431 Expedition (STL 优先权队列)

    Expedition Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8053   Accepted: 2359 Descri ...

  4. ALS数学点滴

    其中,$n_{u_i}$表示用户$i$评分的电影数目,$n_{m_j}$表示对电影$j$评分的用户数目.设$I_i$表示用户$i$所评分的电影集合,则$n_{u_i}$是$I_i$的基数,同样的,$I ...

  5. poj 3735 大数量反复操作问题(矩阵高速幂)

    题意:一个一维数组,3种操作: a:  第i个数+1,b: 第i个数=0 ,c::交换某俩处的数.  由三种基本操作构成一组序列,反复该序列m次(m<10^9),问结果 属于一种综合操作反复型: ...

  6. linux 之 yum 介绍 <转>

    原文在这里  http://doophp.sinaapp.com/archives/linux/yum-setting-parameter.html 因为是程序员出身,平时虽然经常接触服务器,偶尔也会 ...

  7. 模板-->求逆矩阵(利用初等变换求解)

    如果有相应的OJ题目,欢迎同学们提供相应的链接 相关链接 所有模板的快速链接 简单的测试 INPUT: 3 2 1 0 1 2 1 1 1 1 OUTPUT: 0.5 -0.5 0.5 0 1 -1 ...

  8. Day4 - Python基础4 迭代器、装饰器、软件开发规范

    Python之路,Day4 - Python基础4 (new版)   本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 ...

  9. (转)PHP中extract()函数的妙用

    近日在看一个牛人的代码时,看到一个非常好用的函数:extract(),它的主要作用是将数组展开,键名作为变量名,元素值为变量值,可以说为数组的操作提供了另外一个方便的工具,比方说,可以很方便的提取$_ ...

  10. asp.net操作cookie类

    using System; using System.Collections.Generic; using System.Linq; using System.Web; /// <summary ...