博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Uva 12299 带循环移动的RMQ(线段树)
阅读量:5825 次
发布时间:2019-06-18

本文共 2066 字,大约阅读时间需要 6 分钟。

题目链接:

题意:传统的RMQ是一个不变的数组a求区间最值。现在要循环移动(往前移动)。

分析:求区间问题,很容易想到线段树,移动就相当于单点更新。

建树,有两种方案,第一种是nlogn,就是不断的更新,更新logn,有n个数。

1 #include 
2 3 using namespace std; 4 5 6 const int INF = 1000000000; 7 const int maxnode = 1<<18; 8 9 int op, qL, qR, p, v; //qL,qR询问区间,p修改点,v修改值10 11 struct IntervalTree12 {13 int minv[maxnode];14 15 //修改:A[p] = v;16 void update (int o,int L,int R)17 {18 int M = L + (R-L)/2;19 if(L==R) minv[o] = v;20 else21 {22 if(p<=M) update(o*2,L,M);23 else update(o*2+1,M+1,R);24 minv[o] = min(minv[o*2],minv[o*2+1]);25 }26 }27 28 //询问[ql,qr]中的最小值29 int query(int o,int L,int R)30 {31 int M = L+(R-L)/2,ans = INF;32 if(qL<=L&&R<=qR) return minv[o];33 if(qL<=M) ans = min(ans,query(o*2,L,M));34 if(M

 第二种是有一个build的过程,先将数组存起来,然后build,应用到要维护的信息上去。

1 #include 
2 3 using namespace std; 4 5 6 const int INF = 1000000000; 7 const int maxnode = 1<<18; 8 9 const int maxn = 100000 + 10; 10 int A[maxn]; 11 int op, qL, qR, p, v; 12 13 struct IntervalTree 14 { 15 int minv[maxnode]; 16 17 18 void build(int o,int L,int R) 19 { 20 int M = L + (R-L)/2; 21 if(L==R) minv[o] = A[L]; 22 else 23 { 24 build(o*2,L,M); 25 build(o*2+1,M+1,R); 26 minv[o] = min(minv[o*2],minv[o*2+1]); 27 } 28 } 29 30 //点修改 d[p] =v; 31 void update(int o,int L,int R) 32 { 33 int M = L + (R-L)/2; 34 if(L==R) minv[o] = v; 35 else 36 { 37 if(p<=M) update(o*2,L,M); 38 else update(o*2+1,M+1,R); 39 minv[o] = min(minv[o*2],minv[o*2+1]); 40 } 41 } 42 43 int query(int o,int L,int R) 44 { 45 46 int M = L + (R-L)/2,ans=INF; 47 if(qL<=L&&R<=qR) 48 return minv[o]; 49 50 if(qL<=M) ans = min(ans,query(o*2,L,M)); 51 if(M

 

转载于:https://www.cnblogs.com/TreeDream/p/6336923.html

你可能感兴趣的文章
mkisofs
查看>>
java 连接数据库之一个完整的函数
查看>>
centos5.6下virtualbox安装手记
查看>>
mysql脚本
查看>>
OllyDBG 入门系列教学--让你瞬间成为破解高手
查看>>
jQuery插件开发的准备
查看>>
Dubbo点滴(2)之集群容错
查看>>
Zend Framework 自动加载类的实现方法
查看>>
使用Logrotate来管理系统日志
查看>>
机房管理系列之机房温湿度
查看>>
【PMP】Head First PMP 学习笔记 第七章 成本管理
查看>>
全球众多IT巨头竞相抢占云计算市场
查看>>
这台人形机器人曾登上时尚杂志封面 最近还参加了联合国大会
查看>>
mysql源码安装
查看>>
APNS MySQL Tables
查看>>
CEGUI中回车键,退格键的响应
查看>>
Double Kill!何恺明包揽全部两项最佳论文奖!清华北航上交论文活跃度名列前十...
查看>>
任正非:将打造华为统一的AI平台,2018首先在GTS部署
查看>>
货车帮CTO冯亮:利用阿里云服务,发展物流产业互联网
查看>>
iOS代码规范
查看>>