
rmq
yp_2013
这个作者很懒,什么都没留下…
展开
-
hdu5875 二分加st
题意:给你一个n,n个数 m个询问,每次询问你 l,r,, a[l] % a[l+1] % a[l+2] %……a[r] 结果是多少 思路: 每次有效的取模会使结果减半,因此只有log次有效取模,每次往右找一个不大于结果的最靠左的数,ST表+二分 注意RMQ查询的时候少用 log函数,容易超时, st解法:http://blog.youkuaiyun.com/aitangyong/article/原创 2017-04-12 10:03:53 · 388 阅读 · 0 评论 -
hdu 4123 rmq与树的直径
#include <bits/stdc++.h> using namespace std; #define ll long long const int inf = 0x7f7f7f7f; const int maxn = 5e4 + 10; deque<int> Max, Min; struct node{ int v, w; node(){} node(int _v, i原创 2016-06-10 16:41:32 · 370 阅读 · 0 评论 -
hdu5726
题目大概说给一个包含n个数的序列,多次询问有多少个区间GCD值等于某个区间的gcd值。任何一个区间不同的GCD个数是log级别的,因为随着右端点向右延伸GCD是单调不增的,而每次递减GCD至少除以2。考虑固定左端点,最多就nlogn种GCD,可以直接把所有区间GCD值预处理出来,用map存储各种GCD值的个数,查询时直接输出。具体是这样处理的:枚举左端点,进行若干次二分查找,看当前GCD值最多能延伸原创 2017-04-13 09:27:52 · 425 阅读 · 0 评论