#1077 : RMQ问题再临-线段树时间限制:10000ms单点时限:1000ms内存限制:256MB描述上回说到:小Hi给小Ho出了这样一道问题:假设整个货架上从左到右摆放了N种商品,并且依次标号为1到N,每次小Hi都给出一段区间[L, R],小Ho要做的是选出标号在这个区间内的所有商品重量最轻...
分类:
编程语言 时间:
2015-01-23 11:00:02
阅读次数:
320
原文:经典算法题每日演练——第十二题 线段树 这一篇我们来看树状数组的加强版线段树,树状数组能玩的线段树一样可以玩,而且能玩的更好,他们在区间求和,最大,平均
等经典的RMQ问题上有着对数时间的优越表现。
一:线段树 线段树又称"区间树”,在每个节点上保存一个区间,当然区间的划分采用折半的思想,叶子...
分类:
编程语言 时间:
2015-01-16 12:43:51
阅读次数:
245
#1070 : RMQ问题再临Time Limit:10000msCase Time Limit:1000msMemory Limit:256MB描述终于,小Hi和小Ho踏上了回国的旅程。在飞机上,望着采购来的特产——小Hi陷入了沉思:还记得在上上周他们去超市的时候,前前后后挑了那么多的东西,都幸运...
分类:
其他好文 时间:
2014-11-29 23:03:41
阅读次数:
529
#1077 : RMQ问题再临-线段树Time Limit:10000msCase Time Limit:1000msMemory Limit:256MB描述上回说到:小Hi给小Ho出了这样一道问题:假设整个货架上从左到右摆放了N种商品,并且依次标号为1到N,每次小Hi都给出一段区间[L, R],小...
分类:
其他好文 时间:
2014-11-28 21:21:29
阅读次数:
231
题意:
n(10^5)个人分组 每组最少L个人 每组的差异为组中人最大价值-最小价值 要求差异均不超过S 问最少分几组
思路:
假设已经知道组的区间[l,r]那么计算差异就是简单的rmq问题 可以用线段树搞
我们可以用dp[i]表示到i位置产生的最少组数
假设从i位置开始分一组 会影响到哪些dp呢 我们可以利用二分+rmq找到这个组最远延伸到哪里 从L到最远点这个区间的d...
分类:
其他好文 时间:
2014-11-26 14:30:17
阅读次数:
204
对于求区间最大最小值,我们自然而然就想到了一个O(n)时间复杂度的算法,但是如果询问有很多呢?这样必然超时。当然我们可以用线段树来解,使得每一次查询的时间降到log(n),但是对于RMQ算法,只要我们做了些预处理,之后的查询我们仅需要O(1)的时间。Sparse_Table算法是解决RMQ问题的一类...
分类:
其他好文 时间:
2014-11-19 23:55:43
阅读次数:
250
在线的LCA算法,dfs遍历整棵树,对于每个点出现的时候都插入到数组中,然后查询两个点的lca就是两个点在数组中最后出现位置间的dep值最小的点,就转化为链上的RMQ问题了。#include #include #include #include #include #include #include ...
分类:
其他好文 时间:
2014-10-31 22:04:52
阅读次数:
214
题目大意:花神对每一个国家有一个喜爱程度,有的时候他会对连续的一段国家进行访问,求他的喜爱程度的和;有的时候他会对连续的一段国家产生厌恶,喜爱程度变成sqrt(x)下取整。
思路:乍一看好像是RMQ问题,用线段树就可以水过,但是开根号的标记怎么下传?这是一个严重的问题,所以我们要换一个思路。
注意到开根号有一个有趣的性质:sqrt(1) = 1,sqrt(0) = 0,而且所有的数字经过有...
分类:
编程语言 时间:
2014-10-15 11:44:08
阅读次数:
216
以前也没怎么听过这个算法,网络赛中有个题好像是什么最近公共祖先,看了一下这个算法,是一个动态规划,核心思想是倍增. 用途:解决rmq问题,例如给一个序列{an},询问是任意一个区间(l,r)中最小的数或者最大的数. 时间复杂度:预处理的时间是O(nlogn) 查询:O(1) 局限性:只能处...
分类:
其他好文 时间:
2014-10-09 01:34:57
阅读次数:
177
本题是利用后缀数组求最长的回文串。方法是将字符串反转之后拼接到原来的字符串末尾,中间用一个没有出现过的分割符隔开,原因是防止最长公共前缀横跨两个串。之后分别枚举回文串的中点,以及回文串长度是奇数还是偶数,看一下对应位置的最长公共前缀即可。这里的求最长公共前缀要处理RMQ问题,线段树固然可以解决,但是...
分类:
其他好文 时间:
2014-09-26 22:10:08
阅读次数:
142