poj 2892 &&hdu 1540 Tunnel Warfare
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的更多相关文章
- HDU 1540 Tunnel Warfare(最长连续区间 基础)
校赛,还有什么途径可以申请加入ACM校队? Tunnel Warfare Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/ ...
- hdu 1540 Tunnel Warfare (区间线段树(模板))
http://acm.hdu.edu.cn/showproblem.php?pid=1540 Tunnel Warfare Time Limit: 4000/2000 MS (Java/Others) ...
- hdu 1540 Tunnel Warfare 线段树 单点更新,查询区间长度,区间合并
Tunnel Warfare Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pi ...
- HDU 1540 Tunnel Warfare 平衡树 / 线段树:单点更新,区间合并
Tunnel Warfare Time Limit: 4000/2000 MS (Java/Others) Memory Lim ...
- hdu 1540 Tunnel Warfare(线段树区间统计)
Tunnel Warfare Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) T ...
- hdu 1540 Tunnel Warfare 线段数区间合并
Tunnel Warfare Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) P ...
- HDU 1540 Tunnel Warfare 线段树区间合并
Tunnel Warfare 题意:D代表破坏村庄,R代表修复最后被破坏的那个村庄,Q代表询问包括x在内的最大连续区间是多少 思路:一个节点的最大连续区间由(左儿子的最大的连续区间,右儿子的最大连续区 ...
- hdu 1540 Tunnel Warfare (线段树 区间合并)
Tunnel Warfare Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To ...
- HDU 1540 Tunnel Warfare
HDU 1540 思路1: 树状数组+二分 代码: #include<bits/stdc++.h> using namespace std; #define ll long long #d ...
随机推荐
- DateTime日期格式获取 分类: C# 2014-04-15 10:36 233人阅读 评论(0) 收藏
c#.net 获取时间年月日时分秒格式 //获取日期+时间 DateTime.Now.ToString(); // 2008-9-4 20:02:10 DateTime.Now. ...
- MySQL 通配符学习小结
MySQL 通配符 SQL的模式匹配同意你使用"_"匹配不论什么单个字符,而"%"匹配随意数目字符(包含零个字符).在 MySQL中,SQL的模式缺省是忽略大写 ...
- 内存管理概述、内存分配与释放、地址映射机制(mm_struct, vm_area_struct)、malloc/free 的实现
http://blog.csdn.net/pi9nc/article/details/23334659 注:本分类下文章大多整理自<深入分析linux内核源代码>一书,另有参考其他一些资料 ...
- 安装Stomp扩展时错误提示error: 'zend_class_entry' has no member named 'default_properties'
在安装stomp扩展时, 有这样的提示 error: 'zend_class_entry' has no member named 'default_properties' 交待下安装上下文, sto ...
- NYOJ 47过河问题
主要思路:先排序.有两种可能是最小的情况,一种是让最小的去带着最大的过去,然后最小的再回来,还有一种就是先最小的和第二小的一块过去, 然后最小的回来,让最大的和第二大的过去,接着第二小的回来,第二小和 ...
- canvas sprite动画 简单封装
function SpritCtx(img, size, pos, turnTime, totalCount, ctx) { size = size || {}; pos = pos || {}; / ...
- jquery的ajax方法:ajaxStart()和ajaxStop()
ajaxStart()方法: 当AJAX请求开始时,显示加载中的提示. $("#divMessage").ajaxStart(function(){ $(this).show(); ...
- webApp禁止用户保存图像
img { -webkit-touch-callout: none; }
- (转)ThinkPHP自定义标签
第一:在当前应用下的Conf文件夹中config.php加两个配制项: 'TAGLIB_LOAD' => true,//加载标签库打开 'APP_ ...
- iOS开发中EXC_BAD_ACCESS的另类原因
今天偶然学习iOS开发的时候碰到一个EXC_BAD_ACCESS的异常,经查资料得到的解释是由于访问了已经被回收了堆内存对象导致的,参考: http://code.tutsplus.com/tutor ...