点击打开链接

题意:输入n,q,输入n个数,q个查询

query(l,r)查询[l,r]区间的最小的

shift(i1,i2,i3,···,ik)

把i1位置的数改成a[i2],

a[i1]与a[i2]互换数值;

把i2位置上的数改成a[i3];

a[i2]与a[i3]互换数值

思路:裸线段树,竟然wa5次,错在了,update(1,b[k],a[b[k]]);一开始update(1,b[k],a[b[k-1]]),这是不对的,因为我已经把a[b[k]],与a[b[k-1]]互换数值了。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=100005;
int a[maxn];
struct Tree
{int left,right,minn;
};
Tree tree[maxn<<2];
void build(int id,int l,int r)
{tree[id].left=l;tree[id].right=r;if(l==r)tree[id].minn=a[l];else{int mid=(l+r)>>1;build(id*2,l,mid);build(id*2+1,mid+1,r);tree[id].minn=min(tree[id*2].minn,tree[id*2+1].minn);}
}
void update(int id,int pos,int val)
{if(tree[id].left==tree[id].right)tree[id].minn=val;else{int mid=(tree[id].left+tree[id].right)>>1;if(pos<=mid)update(id*2,pos,val);elseupdate(id*2+1,pos,val);tree[id].minn=min(tree[id*2].minn,tree[id*2+1].minn);}
}
int query(int id,int l,int r)
{if(tree[id].left==l&&tree[id].right==r)return tree[id].minn;else{int mid=(tree[id].left+tree[id].right)>>1;if(r<=mid)query(id*2,l,r);else if(l>mid)query(id*2+1,l,r);elsereturn min(query(id*2,l,mid),query(id*2+1,mid+1,r));}
}
int main()
{int n,q,i,j,l,r,b[50],k,ans,t;char s[50];scanf("%d%d",&n,&q);for(i=1;i<=n;i++)scanf("%d",&a[i]);build(1,1,n);while(q--){//cin>>s;scanf("%s",s);if(s[0]=='q'){l=0;r=0;for(i=6;i<strlen(s);i++){if(s[i]==','){j=i+1;break;}elsel=l*10+s[i]-'0';}for(;j<strlen(s);j++){if(s[j]==')')break;r=r*10+s[j]-'0';}ans=query(1,l,r);printf("%d\n",ans);}else{t=0;k=0;for(i=6;i<strlen(s);i++){if(s[i]==','){b[++k]=t;t=0;}else if(s[i]==')'){b[++k]=t;}elset=t*10+s[i]-'0';}for(i=1;i<=k-1;i++){update(1,b[i],a[b[i+1]]);t=a[b[i+1]];a[b[i+1]]=a[b[i]];a[b[i]]=t;}update(1,b[k],a[b[k]]);}}
}

RMQ with Shifts相关推荐

  1. UVA 12299 RMQ with Shifts 线段树

    简单的单点更新 //#pragma comment(linker, "/STACK:1024000000,1024000000") #include<cstdio> # ...

  2. BZOJ 2780: [Spoj]8093 Sevenk Love Oimaster( 后缀数组 + 二分 + RMQ + 树状数组 )

    全部串起来做SA, 在按字典序排序的后缀中, 包含每个询问串必定是1段连续的区间, 对每个询问串s二分+RMQ求出包含s的区间. 然后就是求区间的不同的数的个数(经典问题), sort queries ...

  3. 倍增算法入门 超详细解答+LCA+RMQ(ST表)+例题剖析

    目录 一.倍增算法 二.倍增算法的应用:求LCA(最近公共祖先)附模板题 三.倍增算法的应用:RMQ 问题(ST表)附模板题 一.倍增算法 要了解倍增之前,强烈建议大家先看一下这位大佬对倍增的解释:[ ...

  4. RMQ问题(线段树算法,ST算法优化)

    RMQ (Range Minimum/Maximum Query)问题是指: 对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j<=n),返回数列A中下标在[i,j]里的最小(大)值 ...

  5. HDU - 6305 RMQ Similar Sequence(笛卡尔树)

    http://acm.hdu.edu.cn/showproblem.php?pid=6305 题目 对于A,B两个序列,任意的l,r,如果RMQ(A,l,r)=RMQ(B,l,r),B序列里的数为[0 ...

  6. 【uva10829-求形如UVU的串的个数】后缀数组+rmq or 直接for水过

    题意:UVU形式的串的个数,V的长度规定,U要一样,位置不同即为不同字串 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&am ...

  7. hdu 2459 (后缀数组+RMQ)

    题意:让你求一个串中连续重复次数最多的串(不重叠),如果重复的次数一样多的话就输出字典序小的那一串. 分析:有一道比这个简单一些的题spoj 687, 假设一个长度为l的子串重复出现两次,那么它必然会 ...

  8. bzoj 2006 [NOI2010]超级钢琴 rmq+堆

    2006: [NOI2010]超级钢琴 Time Limit: 20 Sec  Memory Limit: 512 MB Submit: 3708  Solved: 1846 [Submit][Sta ...

  9. hicoder - 1068 【RMQ or 线段树】

    hicoder - 1068 [RMQ or 线段树] RMQ: 1 #include <bits/stdc++.h> 2 #define rep(i,a,b) for(int i = a ...

最新文章

  1. 线性求[1,P-1]的逆元
  2. 《BI那点儿事》三国人物智力分布状态分析
  3. 中国计算机学会CCF推荐国际学术会议和期刊目录-计算机科学理论
  4. mysql5.5以上my.ini中设置字符集
  5. 机器学习小抄.pdf(像背托福单词一样理解机器学习)
  6. Python | 常见的反爬及解决方法,值得收藏
  7. 吃是为了肉体,喝是为了灵魂
  8. Atitit. C# java 的api 目录封装结构映射总结
  9. linux如何设置显示器亮度调节软件,为 Linux 启用色温和亮度调节工具
  10. 年终工作总结目录结构和要点
  11. redhat红帽官方软件仓库同步方案
  12. linux thinkphp5 php7.0禁用eval
  13. Chrome插件开发学习心得(一)之前期开发
  14. 用计算机创造一个宇宙,人工智能令整个宇宙变成一个玄计算机,宇宙是虚拟的,真实世界...
  15. 车载播放器 android,KX万能播放器
  16. 京东内部资料【自然搜索排序白皮书】打算混京东的屌丝必看!
  17. es java api 查询_es聚合查询javaapi
  18. 产品定位的原则,与同类产品竞争原则、拾遗补缺原则等5个方面
  19. Arcgis利用dem数据生成等高线
  20. java中提示确认_javascript对话框使用方法(警告框 javascript确认框 提示框)

热门文章

  1. 台式计算机年限怎么看,电脑使用年限_电脑使用年限查询
  2. 用ANSYS画矩形_用SolidWorks画一个带波浪纹路的瓶子
  3. python自动化办公入门书籍-Python如此神奇,让繁琐工作自动化 (文中含Python基础)...
  4. python编程教学视频-【科研资源03】最全Python编程全套系统视频学习教程
  5. 一张图学会python高清图-一张图带你学会Python,学习Python的非常简单,附教程
  6. python自动化办公excel-自动化办公:python操作Excel
  7. python零基础入门视频免费-阿里云免费推出Python零基础入门在线教程视频
  8. python可以给你干什么-Python可以用来做什么 为你揭开python神秘面纱
  9. 手握14万,博越是最佳选?这车配钢炮动力,可双屏互动,不香?
  10. 北京理工大学语音识别技术.ppt