https://www.luogu.com.cn/problem/P3865 ...
分类:
其他好文 时间:
2019-11-28 21:19:32
阅读次数:
71
Tarjan的SparseTable,即ST表,用于求RMQ区间最值问题。 我对ST表的时间复杂度是有所疑惑的,我认为查询并不能够达到O(1)的速度。也许只是常数?但是查询区间长度为n的时候就要对长度进行logn次调整,蓝书上写的是这样,我不太确定。 本质上,由于寻求区间最值的特性,在给定区间内多次 ...
分类:
编程语言 时间:
2019-11-10 15:18:22
阅读次数:
72
[TOC] 一、ST算法 ST算法(Sparse Table Algorithm)是用于解决RMQ问题(区间最值问题,即Range Maximum/Minimum Question)的一种著名算法。 ST算法能在复杂度为$O(NlogN)$的预处理后,以$O(1)$的复杂度在线处理序列区间内的最大值 ...
分类:
编程语言 时间:
2019-11-03 12:41:51
阅读次数:
91
https://loj.ac/problem/10119 题目描述 给出一个序列,有$M$个询问,每次输出区间$[l,r]$中的最大值 思路 简单的区间最值问题,不涉及修改操作,属于静态区间,显然可以用ST表维护。设$a$为原序列,那么维护的数组$f[ ...
分类:
其他好文 时间:
2019-10-29 19:38:00
阅读次数:
112
1.RMQ问题 RMQ (Range Minimum/Maximum Query):对于长度为n的数组A,回答若干询问RMQ(A,i,j)(i,j<=n-1),返回数组A中下标在i,j范围内的最小(大)值,也就是说,RMQ问题是指求区间最值的问题。最简单的方法,就是遍历数组直接搜索,但是这种方式时间 ...
分类:
其他好文 时间:
2019-10-04 11:37:06
阅读次数:
117
很好用的线性求变换区间最值的方法,比线段树快 用到了优先队列的算法 据说能用STL双向队列解但我不会QAQ #include<iostream> #include<cstdio> #include<cmath> #include<algorithm> #include<cstring> using ...
分类:
其他好文 时间:
2019-10-02 10:42:52
阅读次数:
70
也叫小清新线段树,用于解决区间最值修改问题 具体可以参考jiry_2神犇的集训队论文和WC2016上的PPT 此题就作为模板好了,模板的话写法是比较精妙的 ...
分类:
其他好文 时间:
2019-09-11 19:49:48
阅读次数:
63
很多学校流行一种比较的习惯。老师们很喜欢询问,从某某到某某当中,分数最高的是多少。 这让很多学生很反感。 不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问。当然,老师有时候需要更新某位同学的成绩。 Input本题目包含多组测试,请处理到文件结束。 在每个测试的第一行, ...
分类:
其他好文 时间:
2019-09-05 23:36:36
阅读次数:
115
题意:给定字符串S,然后M个字符串T。Q次询问,每次给出(L,R,l,r),问S[l,r]在L到R这些T字符串中,在哪个串出现最多,以及次数。 思路:把所有串建立SAM,然后可以通过倍增走到[l,r]在SAM上的位置p,然后在这个位置p上求,求的过程就是一个线段树求区间最值。 现在的关键是得到线段树 ...
分类:
其他好文 时间:
2019-08-30 18:43:07
阅读次数:
53
目的:Range Minnum/Maxnum Query,区间最值查询 时间复杂度:预处理O(n*logn),查询O(1) 自用模板: dp[i][j]表示从第i位开始连续 个数中的最小值,rmq(l,r)表示[l,r]区间中的最值 void rmq_init() { for(int i=1;i<= ...
分类:
编程语言 时间:
2019-08-27 14:30:34
阅读次数:
116