UVA 12299 RMQ with shifts


就是线段树的单点修改和区间查询。
然而输入打了一个小时才弄清楚。
#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的更多相关文章
- UVa 12299 RMQ with Shifts(移位RMQ)
p.MsoNormal { margin: 0pt; margin-bottom: .0001pt; text-align: justify; font-family: "Times New ...
- UVa 12299 RMQ with Shifts(线段树)
线段树,没了.. ----------------------------------------------------------------------------------------- # ...
- UVA 12299 RMQ with Shifts(线段树:单点更新)
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...
- 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 ...
- 【UVA】12299-RMQ with Shifts(线段树)
改动的时候因为数据非常小,所以能够直接暴力改动,查询的时候利用线段树即可了. 14337858 option=com_onlinejudge&Itemid=8&page=show_pr ...
- TOJ 4325 RMQ with Shifts / 线段树单点更新
RMQ with Shifts 时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte 描述 In the traditional RMQ (Range M ...
- nyoj 568——RMQ with Shifts——————【线段树单点更新、区间求最值】
RMQ with Shifts 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 In the traditional RMQ (Range Minimum Q ...
- RMQ with Shifts(线段树)
RMQ with Shifts Time Limit:1000MS Memory Limit:65535KB 64bit IO Format:%I64d & %I64u Pra ...
- C. RMQ with Shifts
C. RMQ with Shifts Time Limit: 1000ms Case Time Limit: 1000ms Memory Limit: 131072KB 64-bit intege ...
随机推荐
- 相似文档查找算法之 simHash及其 java 实现
传统的 hash 算法只负责将原始内容尽量均匀随机地映射为一个签名值,原理上相当于伪随机数产生算法.产生的两个签名,如果相等,说明原始内容在一定概 率 下是相等的:如果不相等,除了说明原始内容不相等外 ...
- Java调用Http/Https接口(5)--HttpAsyncClient调用Http/Https接口
HttpAsyncClient是HttpClient的异步版本,提供异步调用的api.文中所使用到的软件版本:Java 1.8.0_191.HttpClient 4.1.4. 1.服务端 参见Java ...
- 百度地图 libBaiduMapSDK_base_v4_2_1.so" is 32-bit instead of 64-bit错误
20191111 集成android sdk,华为手机基本都启动报错,如下: W/System.err: java.security.NoSuchProviderException: no such ...
- Java中强大的format
Java中强大的format Java中允许我们对指定的对象进行某种格式化,从而得到我们想要的格式化样式. Format 首先介绍java.text包中的Format Foramt是一个抽象基类,其具 ...
- 【Java基础】- Java学习路线图
Java的学习路线图,整理以备自己学习和温习. 1.Java基础 具体内容: 1. 编程基础(开发环境配置.基础语法.基本数据类型.流程控制.常用工具类) 2. 面向对象(继承.封装.多态.抽象类.接 ...
- provide inject应用及和props对比
之前本人写过几篇element ui源码解析,其中提到provide/inject,当时只是匆匆带过,没有做深入研究,直到后来一次开发,需要实现孙组件更改父组件的值才想起来,原来这一对属性有如此大的用 ...
- Java项目之查询后分页
一.Jsp页面: <%@ page language="java" contentType="text/html; charset=UTF-8" page ...
- JAVA基础之设置随机成语验证码
package com.oracle; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import ja ...
- CSS-3D动画笔记
3D 在2d的基础上添加 z 轴的变化 3D 位移:在2d的基础上添加 translateZ(),或者使用translate3d() translateZ():以方框中心为原点,变大 3D 缩放:在2 ...
- ubuntu16.04重置root密码
问题描述: 一个用户不能G附加多个用户组,在centos没有问题的.具体的还不清楚 问题解决: 重启进入启动项修改启动参数进入root中设置密码 参考: https://www.cnblogs.c ...