POJ2892Tunnel Warfare
来源:互联网 发布:蚁群算法 路径优化 编辑:程序博客网 时间:2024/06/15 22:45
写完之后各种调试各种TLE,第二天早上整理了下思路,重写了一遍,立马AC了;具体见注释
#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>#include <climits>#include <string>#include <iostream>#include <map>#include <cstdlib>#include <list>#include <set>#include <queue>#include <stack>using namespace std;#define INF 0xfffffff#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1const int maxn=55555;int num[maxn<<1];int sum[maxn<<2],lsum[maxn<<2],rsum[maxn<<2];//sum数组存储连续村庄个数,lsum存储区间内从左起连续个数,rsum存储区间内从右起连续个数void pushup(int rt,int m){ lsum[rt]=lsum[rt<<1]; rsum[rt]=rsum[rt<<1|1]; if(lsum[rt]==(m-(m>>1))) lsum[rt]+=lsum[rt<<1|1]; if(rsum[rt]==(m>>1)) rsum[rt]+=rsum[rt<<1]; sum[rt]=max(max(sum[rt<<1],sum[rt<<1|1]),rsum[rt<<1]+lsum[rt<<1|1]);}void build(int l,int r,int rt){ if(l==r) { lsum[rt]=rsum[rt]=sum[rt]=1; return ; } int m=(l+r)>>1; build(lson); build(rson); pushup(rt,r-l+1);}void update(int key,int add,int l,int r,int rt){ if(l==r) { sum[rt]=lsum[rt]=rsum[rt]=add?1:0; return ; } int m=(l+r)>>1; if(key<=m) update(key,add,lson); else update(key,add,rson); pushup(rt,r-l+1);}int query(int key,int l,int r,int rt){ if(l==r) { return sum[rt]; } int m=(l+r)>>1; int ans=0; int a=l+lsum[rt]-1;int b=r-rsum[rt]+1; if(key>=l&&key<=a) ans=lsum[rt]; if(key>=b&&key<=r) ans=max(ans,rsum[rt]); int c=m-rsum[rt<<1]+1;int d=m+lsum[rt<<1|1]; if(key>=c&&key<=d) ans=max(ans,rsum[rt<<1]+lsum[rt<<1|1]); if(ans) return ans; if(key<=m) return query(key,lson); else return query(key,rson);}int main(){ int n,m,a; char str[100]; while(scanf("%d%d",&n,&m)!=EOF) { build(1,n,1); int cnt=0; while(m--) { scanf("%s",str); if(str[0]=='D') { scanf("%d",&a); update(a,0,1,n,1); num[cnt++]=a; } else if(str[0]=='R') { int t=num[--cnt]; update(t,1,1,n,1); } else { scanf("%d",&a); printf("%d\n",query(a,1,n,1)); } } } return 0;}
0 0
- POJ2892Tunnel Warfare
- POJ2892Tunnel Warfare
- hdu1540&poj2892Tunnel Warfare(线段树单点更新)
- hdu_1540Tunnel Warfare
- Tunnel Warfare
- Tunnel Warfare
- Tunnel Warfare
- Tunnel Warfare
- Tunnel Warfare
- 转载:Atomic Warfare
- poj hdu Tunnel Warfare
- poj 2892 Tunnel Warfare
- poj 2892 Tunnel Warfare
- hdu 1540 Tunnel Warfare
- hdu 1540 Tunnel Warfare
- poj 2892 Tunnel Warfare
- hdu 1540 Tunnel Warfare
- POJ2892 Tunnel Warfare
- python核心编程笔记(1)
- 免费手机开店,管好客、赚多钱!
- Cocos2dx 3.2 横版过关游戏Brave学习笔记(二)
- 【C++ Primer每日一刷之九】创建动态数组
- python命令行参数解析实例
- POJ2892Tunnel Warfare
- 关于tableview的多选问题
- 微软Office与金山WPS Office有何私密关系?
- jsp生成html
- MySQL的information_schema的介绍
- AutoMapper简明教程(学习笔记)
- java生产者消费者多线程同步
- win8.1+vs2013下安装CGAL(含qt、boost、cmake)
- eclipse js 报错解决办法