#include const int N=1e6+5; const int Logn=20; int f[N][Logn],a[N],lg[N],n,m; int main(){ cin>>n>>m; rep(i,1,n) cin>>a[i]; lg[0]=-1; rep(i,1,n) fa[i][... ...
分类:
编程语言 时间:
2018-09-08 15:26:20
阅读次数:
124
ST表类似树状数组,线段树这两种算法,是一种用于解决RMQ(Range Minimum/Maximum Query,即区间最值查询)问题的离线算法 与线段树相比,预处理复杂度同为O(nlogn),查询时间上,ST表为O(1),线段树为O(nlogn) st表的主体是一个二维数组st[i][j],表示 ...
分类:
其他好文 时间:
2018-09-08 15:17:48
阅读次数:
218
``` int a[N]; int dpmax[N][20],dpmin[N][20]; void first(int n)//预处理长度为n的数组 { mm(dpmax,0); mm(dpmin,0); rep(i,1,n+1) { dpmax[i][0]=a[i]; } for(int j=1; ...
分类:
其他好文 时间:
2018-09-04 20:51:26
阅读次数:
177
先上例题:[HAOI2007]理想的正方形 大部分人都用单调队列,但我~~不会~~。首先我们可以暴力枚举所有的可能的正方形,每次我们需要查询RMQ,如果用朴素的方法总复杂度就会变成N^4,~~你不T谁T~~ 那怎么办,~~总不可能写正解~~吧,我们可以用二维st表,预处理N^2logN,每次O(1) ...
分类:
其他好文 时间:
2018-09-04 13:54:51
阅读次数:
345
题目链接: https://cn.vjudge.net/problem/POJ-2452 题目大意: 给出一个数组a,求最大的j-i满足 i<j && a[i] ... a[j]中最大值为a[j],最小值为a[i]。 思路: 可以枚举i,然后二分找出满足的最大的j 首先,先二分找出最大的r,满足从a ...
分类:
其他好文 时间:
2018-08-30 21:05:49
阅读次数:
184
http://acm.hdu.edu.cn/showproblem.php?pid=6305 题目 对于A,B两个序列,任意的l,r,如果RMQ(A,l,r)=RMQ(B,l,r),B序列里的数为[0,1]的实数,B的重量为B的所有元素的和,否则为0。问你B的期望重量是多少。 分析 准备知识:笛卡尔 ...
分类:
其他好文 时间:
2018-08-28 22:39:21
阅读次数:
217
https://www.luogu.org/problemnew/show/P3379 1.欧拉序+rmq(st) 2.欧拉序+线段树 3.离线dfs ...
分类:
其他好文 时间:
2018-08-27 23:15:51
阅读次数:
226
"题目链接" 所有元素初始值为0才能这么做: ①l r全加1 a[l]++; a[r+1] ; 求一遍前缀和为元素本身。 求两遍前缀和为元素前缀和。 include include include include include include include include include inc ...
分类:
其他好文 时间:
2018-08-24 10:43:44
阅读次数:
170
Balanced Lineup ST表的裸题 ST采用倍增和动态规划的思想解决 RMQ问题 初始化:空间复杂度O(nlogn),时间复杂度O(nlogn) 查询一次 O(1);而且这是常数非常小的O(1),而不是像线段树这种毒瘤数据结构(常数非常大) 最近做一道题,ST表和线段树如果算时间复杂度都能 ...
分类:
其他好文 时间:
2018-08-23 23:10:15
阅读次数:
180
LCA定义为对于一颗树 树上两个点的最近公共祖先 一.Tarjan求LCA(离线方法 https://blog.csdn.net/lw277232240/article/details/77017517 二.倍增法求LCA 可以用来求一棵树上两点之间的最短距离 例题: Gym 101808K 思路题 ...
分类:
其他好文 时间:
2018-08-23 00:39:04
阅读次数:
185