就是线段树的单点修改和区间查询。

然而输入打了一个小时才弄清楚。

 #include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
#define MN 100000
#define R return
#define INF 0x3f3f3f3f
char ch;
inline int read(){
int x = ; ch=getchar();
while(ch < ''||ch > '') ch=getchar();
while(ch >=''&&ch <='') x = x* + ch - '',ch = getchar();
R x ;
}
int tree[MN*+];
int n,q,a[MN+],cha[],cnt,l,r;
void init(int t,int a,int b,int l,int add){
int m=a+(b-a)/;
if(a==b){tree[t]=add;R;}
if(m>=l) init(t<<,a,m,l,add);
if(m<l) init(t<<|,m+,b,l,add);
tree[t]=min(tree[t<<],tree[t<<|]);
}
int query(int t,int a,int b,int l,int r){
if(l<=a&&b<=r) R tree[t];
int m=(a+b)/,ans=INF;
if(l<=m) ans=min(ans,query(t<<,a,m,l,r));
if(m<r) ans=min(ans,query(t<<|,m+,b,l,r));
R ans;
}
void evlos(bool k){
if(k){
l=read();r=read();
printf("%d\n",query(,,n,l,r));
}
if(!k){
cnt=; cha[++cnt]=read();
while(ch==',') cha[++cnt]=read();
cha[++cnt]=cha[];
for(int i=;i<cnt;i++) init(,,n,cha[i],a[cha[i+]]);
int v=a[cha[]];
for(int i=;i+<cnt;i++) a[cha[i]]=a[cha[i+]];
a[cha[cnt-]]=v;
}
}
void solve(){
bool k;
ch=getchar();
while(ch!='q'&&ch!='s') ch=getchar();
if(ch=='q') k=;
if(ch=='s') k=;
while(ch!='(') ch=getchar();
evlos(k);
}
int main(){
n=read();q=read();
for(int i=;i<=n;i++) a[i]=read(),init(,,n,i,a[i]);
while(q--) solve();
R ;
}

——————————————————————————————————————————————————————————

来自Paper Cloud的博客,未经允许,请勿转载,谢谢。

UVA 12299 RMQ with shifts的更多相关文章

  1. UVa 12299 RMQ with Shifts(移位RMQ)

    p.MsoNormal { margin: 0pt; margin-bottom: .0001pt; text-align: justify; font-family: "Times New ...

  2. UVa 12299 RMQ with Shifts(线段树)

    线段树,没了.. ----------------------------------------------------------------------------------------- # ...

  3. UVA 12299 RMQ with Shifts(线段树:单点更新)

    题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...

  4. HDU 1754 - I Hate It & UVA 12299 - RMQ with Shifts - [单点/区间修改、区间查询线段树]

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1754 Time Limit: 9000/3000 MS (Java/Others) Memory Li ...

  5. 【UVA】12299-RMQ with Shifts(线段树)

    改动的时候因为数据非常小,所以能够直接暴力改动,查询的时候利用线段树即可了. 14337858 option=com_onlinejudge&Itemid=8&page=show_pr ...

  6. TOJ 4325 RMQ with Shifts / 线段树单点更新

    RMQ with Shifts 时间限制(普通/Java):1000MS/3000MS     运行内存限制:65536KByte 描述 In the traditional RMQ (Range M ...

  7. nyoj 568——RMQ with Shifts——————【线段树单点更新、区间求最值】

    RMQ with Shifts 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述     In the traditional RMQ (Range Minimum Q ...

  8. RMQ with Shifts(线段树)

    RMQ with Shifts Time Limit:1000MS     Memory Limit:65535KB     64bit IO Format:%I64d & %I64u Pra ...

  9. C. RMQ with Shifts

    C. RMQ with Shifts Time Limit: 1000ms Case Time Limit: 1000ms Memory Limit: 131072KB   64-bit intege ...

随机推荐

  1. 相似文档查找算法之 simHash及其 java 实现

    传统的 hash 算法只负责将原始内容尽量均匀随机地映射为一个签名值,原理上相当于伪随机数产生算法.产生的两个签名,如果相等,说明原始内容在一定概 率 下是相等的:如果不相等,除了说明原始内容不相等外 ...

  2. Java调用Http/Https接口(5)--HttpAsyncClient调用Http/Https接口

    HttpAsyncClient是HttpClient的异步版本,提供异步调用的api.文中所使用到的软件版本:Java 1.8.0_191.HttpClient 4.1.4. 1.服务端 参见Java ...

  3. 百度地图 libBaiduMapSDK_base_v4_2_1.so" is 32-bit instead of 64-bit错误

    20191111 集成android sdk,华为手机基本都启动报错,如下: W/System.err: java.security.NoSuchProviderException: no such ...

  4. Java中强大的format

    Java中强大的format Java中允许我们对指定的对象进行某种格式化,从而得到我们想要的格式化样式. Format 首先介绍java.text包中的Format Foramt是一个抽象基类,其具 ...

  5. 【Java基础】- Java学习路线图

    Java的学习路线图,整理以备自己学习和温习. 1.Java基础 具体内容: 1. 编程基础(开发环境配置.基础语法.基本数据类型.流程控制.常用工具类) 2. 面向对象(继承.封装.多态.抽象类.接 ...

  6. provide inject应用及和props对比

    之前本人写过几篇element ui源码解析,其中提到provide/inject,当时只是匆匆带过,没有做深入研究,直到后来一次开发,需要实现孙组件更改父组件的值才想起来,原来这一对属性有如此大的用 ...

  7. Java项目之查询后分页

    一.Jsp页面: <%@ page language="java" contentType="text/html; charset=UTF-8" page ...

  8. JAVA基础之设置随机成语验证码

    package com.oracle; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import ja ...

  9. CSS-3D动画笔记

    3D 在2d的基础上添加 z 轴的变化 3D 位移:在2d的基础上添加 translateZ(),或者使用translate3d() translateZ():以方框中心为原点,变大 3D 缩放:在2 ...

  10. ubuntu16.04重置root密码

    问题描述: 一个用户不能G附加多个用户组,在centos没有问题的.具体的还不清楚 问题解决:   重启进入启动项修改启动参数进入root中设置密码 参考: https://www.cnblogs.c ...