昨天考试考到了这道题,那就来补一下题解吧。

题意简单不再阐述。

首先删除之后还要向左移动,很容易想到 ODT 平衡树,这个过于一眼,不再阐述。

重点说第二种方法。

向左平移的这个操作,我们是否可以用别的方法代替呢?

比如不向左平移,后面的操作时“修正”下标。

对于“修正”操作,可以二分。直接在线段树上二分/在树状数组上倍增(也就是在树状数组上二分)。

二分有一个要注意的细节是:如果二分的是最右边的满足条件的端点,记得不要 Find(x) 而是 Find(x-1)+1。

查询和修改操作就是线段树板子。

代码:

#include<cstdlib>
#include<cstdio>
#include<cctype>
const int M=1e6+5,INF=0x7fffffff;
int n,m,G,tmp,t[M],a[M];
struct Node{
int mx,mi;
Node(const int&mx=-INF,const int&mi=INF):mx(mx),mi(mi){}
}zkw[M<<2],it;
inline int min(const int&a,const int&b){
return a>b?b:a;
}
inline int max(const int&a,const int&b){
return a>b?a:b;
}
inline void Add(register int id){
for(;id<=n;id+=id&-id)++t[id];
}
inline int Find(const int&id){
int len,ans=0,num=0;
for(len=tmp;len;len>>=1){
if(ans+len<=id+num+t[ans+len])num+=t[ans+=len];
}
return ans;
}
inline Node merge(const Node&a,const Node&b){
return Node(max(a.mx,b.mx),min(a.mi,b.mi));
}
inline void update(const int&u){
zkw[u]=merge(zkw[u<<1],zkw[u<<1|1]);
}
inline void Build(){
register int i;
for(G=1;G<=n+1;G<<=1);
for(i=1;i<=n;++i)zkw[G+i]=Node(a[i],a[i]);
for(i=G-1;i;--i)update(i);
}
inline void Modify(int id){
Add(id);
for(zkw[id+=G]=Node(),id>>=1;id;id>>=1)update(id);
}
inline Node Query(int L,int R){
Node ans=Node();
for(L+=G-1,R+=G+1;L^R^1;L>>=1,R>>=1){
if(~L&1)ans=merge(ans,zkw[L^1]);
if(R&1)ans=merge(ans,zkw[R^1]);
}
return ans;
}
signed main(){
register int i,x,L,R,opt;
scanf("%d%d",&n,&m);tmp=n;
for(i=1;i<=n;++i)scanf("%d",a+i);
while(tmp^(tmp&-tmp))tmp^=tmp&-tmp;Build();
for(i=1;i<=m;++i){
scanf("%d",&opt);
if(opt==1){
scanf("%d",&x);
Modify(Find(x-1)+1);
}
else{
scanf("%d%d",&L,&R);
it=Query(Find(L-1)+1,Find(R-1)+1);
printf("%d %d\n",it.mi,it.mx);
}
}
}

LGP6011题解的更多相关文章

  1. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  2. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  3. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  4. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  5. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  6. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  7. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  8. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

  9. CF100965C题解..

    求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...

随机推荐

  1. 短信发送器小案例 smsManager

    总结实现步骤    (1)画 mainActivity页面  <LinearLayout xmlns:android="http://schemas.android.com/apk/r ...

  2. war3 Game

    转载请注明来源:https://www.cnblogs.com/hookjc/ //位置结构.x,y不多说,unknown是3F800000.浮点数1.0?? struct Pos {   DWORD ...

  3. Mybatis返回插入数据的主键的两种方式

    方式一: 需要在映射文件中添加如下片段: <insert id="insertProduct" parameterType="domain.model.Produc ...

  4. Web集群调度器-Haproxy

    Web集群调度器-Haproxy 目录 Web集群调度器-Haproxy 一.Web集群调度器 1.常用的Web集群调度器 2. Haproxy应用分析 3. Haproxy的主要特性 4. 常用集群 ...

  5. 深入Java微服务之网关系列1:什么是网关

    ​ 前言 近来,在想着重构一个新的产品.准备采用微服务的技术解决方案,来搭建基础设施框架.网关,是一个必不可少的组件.那么,网关到底是什么? 其又有什么特点或者特性,成为微服务必不可少的组件呢?今天, ...

  6. 通过loganalyzer展示数据库中的日志

    一.安装mysql # yum -y install mariadb-server # systemctl enable --now mariadb && systemctl stat ...

  7. Solution -「Ynoi 2018」「洛谷 P4117」五彩斑斓的世界

    \(\mathcal{Description}\)   Link.   给定序列 \(\{a_n\}\),处理 \(m\) 次操作: 给定 \(l,r,x\),把 \([l,r]\) 内所有 \(&g ...

  8. php异步:在php中使用fsockopen curl实现类似异步处理的功能方法

    PHP从主流来看,是一门面向过程的语言,它的最大缺点就是无法实现多线程管理,其程序的执行都是从头到尾,按照逻辑一路执行下来,不可能出现分支,这一点是限制php在主流程序语言中往更高级的语言发展的原因之 ...

  9. 分析CVE-2018-18557与复现

    前言 cve描述: LibTIFF 4.0.9 (with JBIG enabled) decodes arbitrarily-sized JBIG into a buffer, ignoring t ...

  10. mysql视图,索引

    一.视图 View 视图是一个虚拟表,是sql语句的查询结果,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据,在使用视图时动态生成.视图的数据变化会影响到基表,基表的数据变化也会 ...