倍增RMQ
雪山上的小草
每天都是初学者
展开
-
hdu5726GCD
题目连接题意:给n个数,再来q个询问,每次给出l,r 输出gcd(a[l][,a[l+1],........,a[r])和区间最小公约数与该最小公约数相同的区间的个数求最小公约数gcd用倍增RMQ定义f[i][k]为从a[i]开始长度为2^k的区间的最小公约数那么f[i][k]=gcd(f[i][k-1],f[i+(1<<(k-1))][k-1]举个例子:n=5,a[5]={1,2,4...原创 2017-10-21 20:46:49 · 183 阅读 · 0 评论 -
RMQ倍增求求区间最值
RMQ算法全称为(Range Minimum/Maximum Query)意思是给你一个长度为n的数组A,求出给定区间的最值的下标。当然我们可以采用枚举,但是我们也可以使用线段树来优化,复杂度为(nlogn),但是最好的办法是采用Sparse_Table算法,简称ST算法。他能在进行(nlogn)的预处理后达到n(1)的效率。下面来分析下最大值和最小值,都要用到DP的思想。最小值(Mininun)...原创 2018-03-14 10:45:14 · 641 阅读 · 0 评论