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

题意简单不再阐述。

首先删除之后还要向左移动,很容易想到 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. 获取公网ip,获取用户城市地址

    <?php class GetIp { public static $api = 'http://ip.taobao.com/service/getIpInfo.php?ip='; public ...

  2. Yosemite下安装jdk、mysql、maven、idea

    Mac OS X Yosemite已经在2014年10月17日正式发布了. 作为一个java开发者,尝鲜第一时间安装了最新版本. 和之前的OS X系统还是有很多不同的.下面主要在java开发环境方面做 ...

  3. Net6 DI源码分析Part4 CallSiteFactory ServiceCallSite

    Net6 CallSiteFactory ServiceCallSite, CallSiteChain abstract class ServiceCallSite ServiceCallSite是个 ...

  4. 1Python运行Appium测试的例子

    电脑系统配置:Windows7的64位 1.Python sample(Python示例)下载 https://github.com/appium/sample-code/tree/master/sa ...

  5. PyCharm编程软件详细安装教程

    PyCharm编程软件安装教程&破解 一.官网下载软件 1. 网页搜索进入PyCharm官网下载页面(https://www.jetbrains.com/pycharm/download/ ) ...

  6. 《PHP程序员面试笔试宝典》——签约和违约需要注意哪些事情?

    本文摘自<PHP程序员面试笔试宝典>. PHP面试技巧分享,PHP面试题,PHP宝典尽在"琉忆编程库". 经过了紧张激烈的笔试面试后,最后过五关斩六将,终于得到了用人单 ...

  7. c++ 聚合/POD/平凡/标准布局 介绍

    目录 前言 聚合 POD(Plain Old Data) 平凡类型(TrivialType) 要求 平凡可复制(TrivialCopyable) 要求 对于某些函数的补充说明 平凡拷贝构造函数 符合条 ...

  8. axios请求方式

    `// 使用默认进行请求(默认是get) axios({ url: "http://localhost:9999/student/student/getAllStudent" }) ...

  9. Kubernetes集群使用CentOS 7.6系统时kubelet日志含有“Reason:KubeletNotReady Message:PLEG is not healthy:”信息

    问题描述 Kubernetes集群使用CentOS 7.6版本的系统时,kubelet日志中可能存在以下告警信息. Reason:KubeletNotReady Message:PLEG is not ...

  10. C#内联函数 特性 MethodImplOptions.AggressiveInlining)

    [MethodImpl(MethodImplOptions.AggressiveInlining)] 内联函数 Impl:implement的缩写 内联函数 在计算机科学中,内联函数(有时称作在线函数 ...