题目链接: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(线段树区间更新)的更多相关文章

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

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

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

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

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

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

  4. hdu 1540 Tunnel Warfare 线段树 区间合并

    题意: 三个操作符 D x:摧毁第x个隧道 R x:修复上一个被摧毁的隧道,将摧毁的隧道入栈,修复就出栈 Q x:查询x所在的最长未摧毁隧道的区间长度. 1.如果当前区间全是未摧毁隧道,返回长度 2. ...

  5. HDU 1540 Tunnel Warfare (线段树)

    Tunnel Warfare Problem Description During the War of Resistance Against Japan, tunnel warfare was ca ...

  6. HDU 1540 Tunnel Warfare (线段树)

    题目大意: n 个村庄排列在一条直线上,相邻的村庄有地道连接,除首尾两个村庄外,其余村庄都有两个相邻的村庄.其中有 3 中操作 D x :表示摧毁编号为 x 的村庄,Q x:表示求出包含村庄 x 的最 ...

  7. HDU 1540 Tunnel Warfare (线段树或set水过)

    题意:D代表破坏村庄,R代表修复最后被破坏的那个村庄,Q代表询问包括x在内的最大连续区间是多少. 析:首先可以用set水过,set用来记录每个被破坏的村庄,然后查找时,只要查找左右两个端点好. 用线段 ...

  8. Tunnel Warfare 线段树 区间合并|最大最小值

    B - Tunnel WarfareHDU - 1540 这个有两种方法,一个是区间和并,这个我个人感觉异常恶心 第二种方法就是找最大最小值 kuangbin——线段树专题 H - Tunnel Wa ...

  9. HDU 3577 Fast Arrangement (线段树区间更新)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3577 题意不好理解,给你数字k表示这里车最多同时坐k个人,然后有q个询问,每个询问是每个人的上车和下车 ...

  10. HDU 4902 Nice boat --线段树(区间更新)

    题意:给一个数字序列,第一类操作是将[l,r]内的数全赋为x ,第二类操作是将[l,r]中大于x的数赋为该数与x的gcd,若干操作后输出整个序列. 解法: 本题线段树要维护的最重要的东西就是一个区间内 ...

随机推荐

  1. taro实战1

    npm install -g @tarojs/cli //或 yarn global add @tarojs/cli

  2. day 7-13 数据库的数据类型

    一. 数据类型 存储引擎决定了表的类型,而表内存放的数据也要有不同的类型,每种数据类型都有自己的宽度,但宽度是可选的 注意:int类型的宽度是显示宽度,并非是数据的存储宽度 详细的介绍:http:// ...

  3. <转>Python中的新式/经典类的查找方式

    在学习到深度和广度的时候,懵了很久.后来看到这篇文章,恍然大悟.写的很好.特意转过来. 经典类: 只要有父类, 就会沿着一直找, 即使已经找过了~ 新式类: 在类继承的多个类拥有共同父类的情况下, 会 ...

  4. C#Note13:如何在C#中调用python

    前言 IronPython 是一种在 .NET 及 Mono上的 Python 实现,由微软的 Jim Hugunin(同时也是 Jython 创造者) 所发起,是一个开源的项目,基于微软的 DLR ...

  5. centos安装Tesseract

    yum安装(推荐) yum search tesseract yum install tesseract.x86_64 -y pip3 install pytesseract pip3 install ...

  6. MySQL磁盘写入策略以及数据安全性的相关参数

     转载自:http://blog.itpub.net/22664653/viewspace-1063134/   innodb_flush_log_at_trx_commit和sync_binlog ...

  7. 莫烦scikit-learn学习自修第四天【内置训练数据集】

    1. 代码实战 #!/usr/bin/env python #!_*_ coding:UTF-8 _*_ from sklearn import datasets from sklearn.linea ...

  8. python try except else finally

    python  try except else finally 实例 class AError(Exception): """AError---exception&quo ...

  9. mysql “Too many connections” 解决办法

    今天生产服务器上的MySQL出现了一个不算太陌生的错误“Too many connections”.平常碰到这个问题,我基本上是修改/etc/my.cnf的max_connections参数,然后重启 ...

  10. Python实现快速排序--数据结构

    快速排序(Quick Sort) 快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序n个元素要O(nlogn)次比较.在最坏状况下则需要O(n^2)次比较,但这种状况并不常见.事实上,快速 ...