ST表(查询区间最值问题)】的更多相关文章

#include<bits/stdc++.h> #define ll long long #define lowbit(x) x&-x using namespace std; ; ],a[N],n,m; void ST_prework() { ;i<=n;i++) { f[i][]=a[i]; } )+; ;j<t;j++) { ;i<=n-(<<j)+;i++) { f[i][j]=max(f[i][j-],f[i+(<<(j-))][j-…
ST表与线段树相比,这是静态的,无法改动,但是他的查询速度比线段树要快,这是牺牲空间换时间的算法. O(nlogn)预处理,O(1)查询.空间O(nlogn). ][]; ]; void rmq_init() { ;i<=n;i++) d[i][]=a[i]; ;(<<j)<=n;j++) ;i+(<<j)-<=n;i++) d[i][j]=min(d[i][j-],d[i+(<<(j-))][j-]); ;len<=n;++len){ ; &l…
Input 第一行给出一个数字N,接下来N+1行,每行给出一个数字Ai,(0<=i<=N<=1E6)接来给出一个数字Q(Q<=7000),代表有Q个询问每组询问格式为a,b即询问从输入的第a个数到第b个数,其中的最大值是多少 Output 如题所述 Sample Input 10 0 1 2 3 2 3 4 3 2 1 0 5 0 10 2 4 3 7 7 9 8 8 Sample Output 4 3 4 3 2 这题就怎么说呢,范围怎么大,暴力显然超时,st表表示起来也简单,就…
The Water Problem HDU - 5443 「 第一部分nlogn预处理   第二部分O(1)询问 」 #include <iostream> #include <bits/stdc++.h> using namespace std; const int maxn = 1000004; int f[maxn][20]; int a[maxn]; int n,q; void st() { for(int i = 1; i <= n; i ++) f[i][0] =…
linq to sql 实现左外部连接:var query=from a in A join b in B on a.ID equals b.aID into ab from a1 in ab.DefaultIfEmpty() select a1; 然后取query.Count()就行了   因为是延迟查询所以不会多查数据…
#include<cstdio> #include<algorithm> using namespace std; ; struct Seg { int l,r,mi,ma; }tree[maxn*]; int val[maxn]; ) { tree[i].l=l; tree[i].r=r; if (l==r) { tree[i].mi=val[l]; tree[i].ma=val[l]; } else { ; build(l,mid,i<<); build(mid+,…
链接:http://poj.org/problem?id=3368 题意:给出n个连续单调不递减数,q次询问,每次询问区间(L,R)出现频率最多的数,问出现了多少次 思路:因为n个数是单调不递减的,所以可以预处理一个频率数组cnt[ ],cnt[ i ]记录某个数到 i 位置时,出现了多少次,再预处理一个index数字,记录每一段相同的数字,最右端的位置,因为每次询问的时候可能会出现一部分连续的数被L这个位置隔开,cnt[i]只记录了某个数到i位置出现了多少次,被隔开的部分多算了,所以需要减去,…
ST表,听起来高大上,实际上限制非常多,仅仅可以求最值问题: 为什么?先从原理看起: st表运用了倍增的思想:st[i][j] = min(st[i][j - 1],st[i + 2^(j - 1))][j - 1]): 意义是:从i开始向后连续2^j个位置的最大值是,i开始向后连续2^(j-1)个位置的最大值和i+2^(j-1)开始向后连续2^(j-1)个位置的最大值: 好了,结构建立起来了,那么怎么查询呢? 一个公式:2^log(a)>a/2 . 所以说,查询(x,y)时我们设k=log(y…
I Hate It Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 62944    Accepted Submission(s): 24440 Problem Description 很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少. 这让很多学生很反感. 不管你喜不喜欢,现在需要你做的是,就是按照老师…
GCD Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 3432    Accepted Submission(s): 1227 Problem Description Give you a sequence of N(N≤100,000) integers : a1,...,an(0<ai≤1000,000,000). There a…