#1068 : RMQ-ST算法
时间限制:10000ms
单点时限:1000ms
内存限制:256MB
描述
小Hi和小Ho在美国旅行了相当长的一段时间之后,终于准备要回国啦!而在回国之前,他们准备去超市采购一些当地特产——比如汉堡(大雾)之类的回国。
但等到了超市之后,小Hi和小Ho发现者超市拥有的商品种类实在太多了——他们实在看不过来了!于是小Hi决定向小Ho...
分类:
编程语言 时间:
2015-08-05 18:29:38
阅读次数:
137
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3183
RMQ (Range Minimum/Maximum Query)问题是指:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j
ST(实质是动态规划),O(nlogn)-O(q) online。
ST算法(Sparse Table),以求最大值为例,设d[i,j]表示[i,i+...
分类:
其他好文 时间:
2015-08-04 11:14:23
阅读次数:
122
题目地址:http://poj.org/problem?id=3264Sample Input6 31734251 54 62 2Sample Output630分析:标准的模板题,可以用线段树写,但用RMQ-ST来写代码比较短。每次输出区间【L, R】内最大值和最小值的差是多少。注意一个地方,代码...
分类:
其他好文 时间:
2015-07-30 20:55:16
阅读次数:
197
地址:http://blog.csdn.net/z287438743z/article/details/8132806RMQ(Range Minimum/Maximum Query)问题就是求区间最值问题。这里要仔细分析的是ST算法,它可以做到O(nlogn)的预处理,O(1)回答每个询问。网上看了...
分类:
编程语言 时间:
2015-07-30 11:10:53
阅读次数:
155
描述 南将军统率着N个士兵,士兵分别编号为1~N,南将军经常爱拿某一段编号内杀敌数最高的人与杀敌数最低的人进行比较,计算出两个人的杀敌数差值,用这种方法一方面能鼓舞杀敌数高的人,另一方面也算是批评杀敌数低的人,起到了很好的效果。所以,南将军经常问军师小工第i号士兵到第j号士兵中,杀敌数最高的人与杀敌...
分类:
编程语言 时间:
2015-07-29 18:47:52
阅读次数:
202
ACG++826ms146MB思路: 按照提示一的方法进行实现。使用二进制的思想,只需要找到从第i个开始的2^j个数中的最小。i=(1,n)而因为n上限为100万,100万的二进制(1111 01000010 01000000),那么j 最大不超过20。按最坏情况算,只需要计算n*20个结果就行了....
分类:
编程语言 时间:
2015-05-15 19:17:57
阅读次数:
194
题目描述 这次是使用在线算法解决这个问题。 两个节点的最近公共祖先就是这两个节点的通路上深度最浅的那个节点。 可以通过一遍深搜把树转成数组:每次经过一个节点(无论是从父节点进入还是从子节点返回)时,把它放入数组。同时要记录每个节点在数组中最后一次出现的位置。 使用RMQ-ST算法预先计算2^k长度区...
分类:
其他好文 时间:
2015-05-09 23:18:38
阅读次数:
162
问题描述 问题就是询问区间内的最小值。 数据量n, 查询量q。 朴素的算法复杂度O(nq)。 为减少冗余计算,预先计算出每个位置起 2^k 长度范围内的最小值。 data[i][j]表示从 i 起的 2^k 个元素的最小值。 递推式 data[i][j] = min{data[i][j – 1], ...
分类:
编程语言 时间:
2015-05-08 23:33:49
阅读次数:
157
RMQ(Range Minimum/Maximum Query),即区间最值查询,是指这样一个问题:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j#include #include #include using namespace std;const int N = 10e6+1.....
分类:
编程语言 时间:
2015-05-03 00:45:00
阅读次数:
183
原题地址Spare Table练习记得用scanf和printf输入输出,否则会TLE代码: 1 #include 2 #include 3 #include 4 5 using namespace std; 6 7 #define MAX_SIZE 1000010 8 9 int N,...
分类:
编程语言 时间:
2015-04-01 10:49:22
阅读次数:
156