HDU--1540 Tunnel Warfare(线段树区间更新)
题目链接:1540 Tunnel Warfare
以为单组输入 这个题多组输入
结构体记录每个区间左边和右边的连续区间 ms记录最大
在查询操作时:
1、这个点即将查询到右区间 看这个点 x 是否存在于右区间的ls 如果存在说明有可能 左区间的rs 和右区间的 ls 是连续的 这时候我们要考虑查询两个区间并且 值想加
查询 左区间的时候同理
#include<bits/stdc++.h>
using namespace std;
#define maxn 500010
struct ac{
int ls,rs,ms;
}a[maxn];
int b[maxn];
void build(int l,int r,int in){
if(l==r){
a[;
return ;
}
;
build(l,mid,);
build(mid+,r,+);
a[].ms+a[+].ms);
}
void updata(int l,int r,int in,int z,int i){
if(l==r){
){
a[;
}else{
a[;
}
return ;
}
;
if(z>mid){
updata(mid+,r,+,z,i);
},z,i);
,rr=+;
a[in].ls=a[ll].ls;
a[in].rs=a[rr].rs;
a[in].ms=max(a[ll].ms,max(a[rr].ms,a[ll].rs+a[rr].ls));
)){
a[in].ls+=a[rr].ls;
}
if(a[rr].rs==(r-mid)){
a[in].rs+=a[ll].rs;
}
}
int query(int l,int r,int in,int z){
))||(a[)||(l==r)){
return a[in].ms;
}
;
if(z>mid){
+].ls){
,r,+,z)+query(l,mid,,mid);
},r,+,z);
}else{
].rs+){
,z)+query(mid+,r,+,mid+);
},z);
}
}
int main(){
int n,m;
while(cin>>n>>m){
build(,n,);
;
;j<m;j++){
];
int x;
cin>>c;
]=='D'){
cin>>x;
b[++len]=x;
updata(,n,,x,);
}]=='R'){
>=)
updata(,n,,b[len--],);
}else{
cin>>x;
cout<<query(,n,,x)<<endl;
}
}
}
}
HDU--1540 Tunnel Warfare(线段树区间更新)的更多相关文章
- 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: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pi ...
- HDU 1540 Tunnel Warfare 线段树区间合并
Tunnel Warfare 题意:D代表破坏村庄,R代表修复最后被破坏的那个村庄,Q代表询问包括x在内的最大连续区间是多少 思路:一个节点的最大连续区间由(左儿子的最大的连续区间,右儿子的最大连续区 ...
- hdu 1540 Tunnel Warfare 线段树 区间合并
题意: 三个操作符 D x:摧毁第x个隧道 R x:修复上一个被摧毁的隧道,将摧毁的隧道入栈,修复就出栈 Q x:查询x所在的最长未摧毁隧道的区间长度. 1.如果当前区间全是未摧毁隧道,返回长度 2. ...
- HDU 1540 Tunnel Warfare (线段树)
Tunnel Warfare Problem Description During the War of Resistance Against Japan, tunnel warfare was ca ...
- HDU 1540 Tunnel Warfare (线段树)
题目大意: n 个村庄排列在一条直线上,相邻的村庄有地道连接,除首尾两个村庄外,其余村庄都有两个相邻的村庄.其中有 3 中操作 D x :表示摧毁编号为 x 的村庄,Q x:表示求出包含村庄 x 的最 ...
- HDU 1540 Tunnel Warfare (线段树或set水过)
题意:D代表破坏村庄,R代表修复最后被破坏的那个村庄,Q代表询问包括x在内的最大连续区间是多少. 析:首先可以用set水过,set用来记录每个被破坏的村庄,然后查找时,只要查找左右两个端点好. 用线段 ...
- Tunnel Warfare 线段树 区间合并|最大最小值
B - Tunnel WarfareHDU - 1540 这个有两种方法,一个是区间和并,这个我个人感觉异常恶心 第二种方法就是找最大最小值 kuangbin——线段树专题 H - Tunnel Wa ...
- HDU 3577 Fast Arrangement (线段树区间更新)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3577 题意不好理解,给你数字k表示这里车最多同时坐k个人,然后有q个询问,每个询问是每个人的上车和下车 ...
- HDU 4902 Nice boat --线段树(区间更新)
题意:给一个数字序列,第一类操作是将[l,r]内的数全赋为x ,第二类操作是将[l,r]中大于x的数赋为该数与x的gcd,若干操作后输出整个序列. 解法: 本题线段树要维护的最重要的东西就是一个区间内 ...
随机推荐
- spring mvc常用注解总结
1.@RequestMapping@RequestMappingRequestMapping是一个用来处理请求地址映射的注解(将请求映射到对应的控制器方法中),可用于类或方法上.用于类上,表示类中的所 ...
- playframework 编译打包过程失败
root@mytest:/data# play war p2p-master --exclude tmp:logs:test:eclipse -o /data/a/sp2p~ _ _ ~ _ __ | ...
- 二、K8S镜像问题
根据前面错误信息来看我们需要下载的镜像.就当前来说,用户 mirrorgooglecontainers 在 docker hub 同步了所有 k8s 最新的镜像,先从这儿下载,然后修改 tag 即可. ...
- Learning to Rank for IR的评价指标—MAP,NDCG,MRR
转自: https://www.cnblogs.com/eyeszjwang/articles/2368087.html MAP(Mean Average Precision):单个主题的平均准确率是 ...
- Python——Flask框架——数据库
一.数据库框架 Flask-SQLAlchemy (1)安装: pip install flask-sqlalchemy (2)Flask-SQLAlchemy数据库URL 数据库引擎 URL MyS ...
- ADO.NET工具类(三)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...
- react事件绑定,事件传参,input单向数据绑定
import React, { Component } from 'react'; class New extends Component { constructor(props){ super(pr ...
- DeepLearning网络设计总结
检测网络: 1. tiling层可以减少计算量,deconvolution相比tiling性能要好一些
- Jetson TX1 install py-faster-rcnn
Install py-faster-rcnn following the official version https://github.com/rbgirshick/py-faster-rcnn ...
- python与java的内存机制不一样;java的方法会进入方法区直到对象消失 方法才会消失;python的方法是对象每次调用都会创建新的对象 内存地址都不i一样
python与java的内存机制不一样;java的方法会进入方法区直到对象消失 方法才会消失;python的方法是对象每次调用都会创建新的对象 内存地址都不i一样