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 ...
随机推荐
- 自学Python编程的第五天(希望有IT大牛帮我看最下面的代码)----------来自苦逼的转行人
2019-09-15-15:40:24 今天没有学知识,是一个一周总结,把这一周学的知识总结一遍,然后把做过的练习题再做一遍 看是否还会有再出现同样的错误,而且还可以知道有哪些知识点没有掌握好,可以把 ...
- MySQL中的JSON类型
前言(废话) 昨天抽了点时间在网上搜列了一个开源项目,项目挺完整的,前后台分离还带有微信小程序,我Clone下代码,经过一番倒腾,嘿~还真就跑起来了.在这个过程中,体验了一把VUE项目工程细节,因为之 ...
- 移动端的touch click事件的理解+点透
移动端在touch上一共有4个事件 touchstart touchmove touchend touchcancel, touchcancel, 一般来说,它们执行的顺序为 touchstart - ...
- 1+X证书学习日志——javascript基础
js javascript js的组成: ECMAscript DOM BOM js放置的位置 <script></script> <script src="路 ...
- Django:基于调试组插件go-debug-toolbar
1.django-debug-toolbar 介绍 django-debug-toolbar 是一组可配置的面板,可显示有关当前请求/响应的各种调试信息,并在单击时显示有关面板内容的更多详细信息.返回 ...
- AppDir【创建缓存目录】【建议使用这个工具类】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 创建缓存目录 public static String APP_CACHE = "";// /storage/e ...
- 部署http访问SVN模式出现403问题
部署http访问SVN模式到阿里云服务器 参考连接地址 https://help.aliyun.com/document_detail/52864.html 设置好账号进行访问 http://ip/s ...
- 03-JavaScript语法介绍
本篇主要关于原生JavaScript的介绍,其中包括其嵌入HTML页面方式,JavaScript的语法结构,以及贪吃蛇案例: 一.绪论 JavaScript是运行在浏览器端的脚步语言,JavaScri ...
- Linux文本编译工具VIM详解
Linux文本编译工具VIM详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.VIM概述 1>.vim简介 >.vi: 全称Visual editor,即文本编辑 ...
- java 获取最近7天 最近今天的日期
private static Date getDateAdd(int days){ SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-d ...