
RMQ问题
文章平均质量分 54
keyboarder_zsq
你所认为的极限,其实是别人的起点。
展开
-
RMQ算法
ST算法;参考自:http://blog.youkuaiyun.com/sdj222555/article/details/7875575 主要是查询可以做到O(1),先预处理,用一个DP解决。 设a[i]是区间最值的数列,f[i,j]表示从第i个数起连续 2^j 个数中的最大值。 例如: 在数组:3 2 4 5 6 8 1 2 9 7, f[1,0]表示从第1个数起,长度为2^0=1的最大值,也就3原创 2016-09-12 20:41:19 · 455 阅读 · 0 评论 -
hdoj5875【二分+RMQ】
全部从我大哥那里学习得来。。 一开始硬着头皮就是根据思路上线段树,明知是T还要写(因为线段树还不是很熟,趁机练一发) 后来果然T了,然后就去学了一发RMQ的ST算法,查询是O(1)。 ST算法主要: //把dp[i,j]平均分成两段 //(因为dp[i,j]一定是偶数个数字),从 i 到i + 2 ^ (j - 1) - 1为一段, //i + 2 ^ (j - 1)到i + 2 ^ j原创 2016-09-12 21:44:38 · 478 阅读 · 0 评论 -
hdoj5289【RMQ+二分】【未完待续】
思路: 对当前值查找最近满足位置; 利用RMQ求出区间最大最小值,再枚举右端点,二分区间找到满足要求的最大区间累加原创 2016-09-12 22:23:49 · 427 阅读 · 0 评论 -
2016 Multi-University Training Contest 1 GCD【RMQ+二分】
题意: 第一个数求给定询问区间的GCD,第二个数求在这个给定区间里面有多少种连续区间的GCD是等于第一个数。 思路: 无思路。原创 2016-07-19 16:56:03 · 1329 阅读 · 0 评论 -
Lightoj 1082【RMQ】
这里很low地写了个线段树。。。#include using namespace std;typedef long long LL;const int N=1e5+10;struct SegT{ int left; int right; int w;};SegT q[N*4];void Build(int num,int L,int R){ q原创 2016-11-21 19:05:00 · 469 阅读 · 0 评论 -
HDU5381【莫队算法+区间GCD特性】
NO RESPONSE!原创 2017-02-18 22:36:38 · 1355 阅读 · 0 评论 -
POJ3264 【RMQ基础题—ST-线段树】
ST算法Code://#include#include#include#include#include#include#includeusing namespace std;typedef long long LL;const int N=5e4+10;int n,q;int a[N];int f1[N][30];int f2[N][30];void ST()原创 2017-01-23 20:19:08 · 385 阅读 · 0 评论