I - Tunnel Warfare
- #include<cstdio>
- #include<cstring>
- #include<iostream>
- #include<algorithm>
- #define MAXN 50010
- using namespace std;
- int n,m,top;
- int stack[MAXN],vis[MAXN];
- struct nond{
- int l,r,len,ren,mid;
- }tree[MAXN*];
- void build(int now,int l,int r){
- tree[now].l=l;tree[now].r=r;
- tree[now].len=tree[now].r-tree[now].l+;
- tree[now].ren=tree[now].mid=tree[now].len;
- if(tree[now].l==tree[now].r) return ;
- int mid=(tree[now].l+tree[now].r)/;
- build(now*,l,mid);
- build(now*+,mid+,r);
- }
- void change(int now,int x,int pos){
- if(tree[now].l==tree[now].r){
- tree[now].len=tree[now].ren=tree[now].mid=pos;
- return ;
- }
- int mid=(tree[now].l+tree[now].r)/;
- if(x<=mid) change(now*,x,pos);
- else if(x>mid) change(now*+,x,pos);
- tree[now].len=tree[now*].len;
- tree[now].ren=tree[now*+].ren;
- tree[now].mid=max(tree[now*].mid,tree[now*+].mid);
- tree[now].mid=max(tree[now].mid,tree[now*].ren+tree[now*+].len);
- if(tree[now*].len==tree[now*].r-tree[now*].l+)
- tree[now].len=tree[now*].len+tree[now*+].len;
- if(tree[now*+].ren==tree[now*+].r-tree[now*+].l+)
- tree[now].ren=tree[now*+].ren+tree[now*].ren;
- }
- int query(int now,int k){
- if(tree[now].l==tree[now].r||tree[now].mid==||tree[now].mid==tree[now].r-tree[now].l+)
- return tree[now].mid;
- int mid=(tree[now].l+tree[now].r)/;
- if(k<=mid){
- if(k>=tree[now*].r-tree[now*].ren+)
- return query(now*,k)+query(now*+,mid+);
- else return query(now*,k);
- }
- else{
- if(k<=tree[now*+].l+tree[now*+].len-)
- return query(now*+,k)+query(now*,mid);
- else return query(now*+,k);
- }
- }
- int main(){
- while(scanf("%d%d",&n,&m)!=EOF){
- build(,,n);top=;
- for(int i=;i<=m;i++){
- char c;int x;
- scanf("\n%c",&c);
- if(c=='D'){
- scanf("%d",&x);
- stack[++top]=x;change(,x,);
- }
- else if(c=='Q'){
- scanf("%d",&x);
- printf("%d\n",query(,x));
- }
- else change(,stack[top--],);
- }
- }
- }
- /*
- 7 9
- D 3
- D 6
- D 5
- Q 4
- Q 5
- R
- Q 4
- R
- Q 4
- */
I - Tunnel Warfare的更多相关文章
- hdu1540 Tunnel Warfare
Tunnel Warfare Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To ...
- [POJ2892]Tunnel Warfare
[POJ2892]Tunnel Warfare 试题描述 During the War of Resistance Against Japan, tunnel warfare was carried ...
- HDU 1540 Tunnel Warfare 平衡树 / 线段树:单点更新,区间合并
Tunnel Warfare Time Limit: 4000/2000 MS (Java/Others) Memory Lim ...
- POJ 2892 Tunnel Warfare(线段树单点更新区间合并)
Tunnel Warfare Time Limit: 1000MS Memory Limit: 131072K Total Submissions: 7876 Accepted: 3259 D ...
- HDU 1540 Tunnel Warfare 线段树区间合并
Tunnel Warfare 题意:D代表破坏村庄,R代表修复最后被破坏的那个村庄,Q代表询问包括x在内的最大连续区间是多少 思路:一个节点的最大连续区间由(左儿子的最大的连续区间,右儿子的最大连续区 ...
- hdu 1540 Tunnel Warfare (区间线段树(模板))
http://acm.hdu.edu.cn/showproblem.php?pid=1540 Tunnel Warfare Time Limit: 4000/2000 MS (Java/Others) ...
- poj 2892 Tunnel Warfare(线段树)
Tunnel Warfare Time Limit: 1000MS Memory Limit: 131072K Total Submissions: 7499 Accepted: 3096 D ...
- 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(线段树区间统计)
Tunnel Warfare Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) T ...
- HDU 1540 Tunnel Warfare(最长连续区间 基础)
校赛,还有什么途径可以申请加入ACM校队? Tunnel Warfare Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/ ...
随机推荐
- 简述RTMPDump与编译移植
RTMPDump主页 ,RTMPDump库主要包含三部分: 1.一个基本的客户端程序 2.两个服务器程序(rtmpsrv.rtmpsuck) 3.一个支持rtmp协议的库—librtmp 下载RTMP ...
- iOS版本、iPhone版本、Xcode版本比对
iOS版本 iPhone版本 Xcode版本 其他 2003年 Xcode1.0 2005年4月29日 Xcode2.0 2007年1月9日 iPhone OS(iOS1): 虚拟键盘.谷歌地图 第一 ...
- 快速排序及三向切分快排——java实现
快速排序也是一种分治算法.主要思想是选取一个切分点,将大于切分点的元素都放置到数组右侧,小于切分点的元素都放置到数组左侧:然后递归,再对切分点左侧和右侧分别排序. 归并排序时递归在前,归并在后,快速排 ...
- ecshop数据库说明
数据库 ecshop 表的结构 ecs_account_log 字段 类型 空 默认 含义 log_id mediumint(8) 否 账户记录表 user_id mediumint(8) 否 用户编 ...
- protobuf 编译 java js文件详解
首先下载protobuf.exe 下载地址:https://download.csdn.net/download/qq_34756156/10220137 MessageBody.proto synt ...
- sql学习--update
两种修改形式 第一种:静态插入 ,notes='began career selling ...balabala' where jc='johnny ca' 第二种: --注意别名和on后边的表连接不 ...
- NSLayoutConstraints加动画来改变约束
// // ViewController.m // NSLayoutAnimationDemo // // Created by ebaotong on 15/7/22. // Copyright ( ...
- Android 使用SQLite存储以及读取Drawable对象
在进行Android开发过程中,我们经常会接触到Drawable对象,那么,若要使用数据库来进行存储及读取,该如何实现? 一.存储 //第一步,将Drawable对象转化为Bitmap对象 Bitma ...
- MainActivity 多个Fragment 内存被回收
0. 前言 应用首页采用Activity +Tab 模式,多个Fragment 替换显示隐藏 FragmentTransaction transaction = getSupportFragmentM ...
- phpstorm 使用
常用快捷 ctrl + / 单行注释 Alt+1 隐藏左侧任务栏 设置 1:control+shift+A功能可以搜索对应功能,把mouse:Change font size(Zoom) ...的按钮 ...