RMQ
无敌大饺子
这个作者很懒,什么都没留下…
展开
-
POJ 3264 Balanced Lineup (RMQ)
RMQ(Range Minimum/Maximum Query)问题: RMQ问题是求给定区间中的最值问题。当然,最简单的算法是O(n)的,但是对于查询次数很多(设置多大100万次),O(n)的算法效率不够。可以用线段树将算法优化到O(logn)(在线段树中保存线段的最值)。不过,Sparse_Table算法才是最好的:它可以在O(nlogn)的预处理以后实现O(1)的查询效率。下面把Spa原创 2013-04-26 10:31:50 · 529 阅读 · 0 评论 -
ZOJ 2859 Matrix Searching(二维RMQ)
二维的相当于先求出每一行i的每一列j开始到j+2^j-1最值,然后求各个行和列之间的最值#include #include #include #include using namespace std;#define mmin(a,b) (a)<(b)?(a):(b);const int maxn=310;int dp[maxn][maxn][9][9],grid[maxn][原创 2013-04-26 14:19:17 · 650 阅读 · 0 评论 -
POJ 2019 Cornfields(二维RMQ)
好像有N方的方法,研究中#include #include #include #include using namespace std;#define mmax(a,b) ((a)>(b)?(a):(b))#define mmin(a,b) ((a)<(b)?(a):(b))const int maxn=256;int dp1[maxn][maxn][8][8],dp2[max原创 2013-04-26 16:34:12 · 568 阅读 · 0 评论 -
ZOJ 3614 Choir(二维RMQ)
首先把矩阵和和矩阵平方和算出来,然后枚举每一个位置,中间计算的时候要减去最大值,这里就用到了二维RMQ O(1)的时间写的时候用int溢出,找了好久. 方差 = (矩阵平方和 + n × 平均值 × 平均值 - 2 × 平均值 × 矩阵和) / n(n为矩阵内的元素个数)#include #include #include #include using namespac原创 2013-04-26 20:15:50 · 643 阅读 · 0 评论 -
ZOJ 3726 Alice's Print Service
题意:打印服务,打印[S(i), S(i+1)]内张纸需要Pi元一张,随着张数的增加,价格非递增,给出m个询问打印的张数,求最小的花费。我的做法是先二分找到范围i然后在[i +1, n]里面找打印的最小价钱,是否比i小.最小值用了RMQ.#include #include #include #include using namespace std;const int MAX =原创 2014-03-29 10:20:33 · 654 阅读 · 0 评论