RMQ是英文Range Minimum/Maximum Query的缩写,是询问某个区间内的最值,这里讲一种解法:ST算法 ST算法通常用在要多次(10^6级别)询问区间最值的问题中,相比于线段树,它实现更简单,效率更高,但不支持修改,且一般只能维护最值。 ST算法实际上是动规,原理如下: 预处理: ...
分类:
其他好文 时间:
2018-07-13 19:06:55
阅读次数:
148
Definition ST表是一种用于处理静态RMQ问题(无修改区间最值问题)的最快数据结构,书写方便使用简单效率便捷。其中其预处理复杂度为O(nlogn),查询复杂度为O(1)。总时间复杂度为O(nlogn)。常数远小于树状数组、线段树等毒瘤数据结构。 ST表在预处理时采用倍增以及DP思想,即设f ...
分类:
其他好文 时间:
2018-07-08 22:06:12
阅读次数:
301
//ST表 //计算RMQ 即区间最值 //思想:区间dp+倍增 //注:将代码内所有max改成min即可求最小值 #include #include #include #include #include #include using namespace std; int n,m,l,r,a[100... ...
分类:
其他好文 时间:
2018-07-08 17:17:28
阅读次数:
151
"传送门" 做题背景(~~啥子?这个东西还能有背景?~~)最近同学在讲lca 在树上跑倍增的时候用一个类似于st表的东西,跟着倍增数组一起维护就行了。 cpp include include include using namespace std; const int maxn=101000; st ...
分类:
其他好文 时间:
2018-07-07 23:30:19
阅读次数:
211
题目链接:https://www.luogu.org/problemnew/show/P2880 是你逼我用ST表的啊qaq include include include include using namespace std; const int maxn = 500001; int minst ...
分类:
其他好文 时间:
2018-07-06 22:32:25
阅读次数:
224
还是基本的问题,求LCA。 详情见: https://blog.csdn.net/saramanda/article/details/54963914 讲得非常好了。 fa[i][j]=fa[ fa[i][j-1] ][j-1] 用文字叙述为:i的第2^j个父亲 是i的第2^(j-1)个父亲的第2^ ...
分类:
编程语言 时间:
2018-07-03 15:14:09
阅读次数:
131
题目大意:给你两个长度为n的数组a, b,问你有多少个问你有多少个区间满足 a中最大值等于b中最小值。 思路:我本来的想法是用单调栈求出每个点的管辖区间,然后问题就变成了巨麻烦的线段覆盖问题,就爆炸写了 一晚上假算法。正解就是枚举一个端点,然后二分找右端点的区间,因为满足一个很神奇的单调性,然后st ...
分类:
其他好文 时间:
2018-06-27 13:54:57
阅读次数:
160
查看表相关命令 使用索引和不使用索引 其他注意事项 我们已经看出随着起始记录的增加,时间也随着增大, 这说明分页语句limit跟起始页码是有很大关系的,那么我们把起始记录改为40w看下(也就是记录的一般左右) select * from product limit 400000, 20 3.229秒 ...
分类:
数据库 时间:
2018-06-17 22:29:59
阅读次数:
228
ST表是用来解决RMQ(区间最值)问题的算法 预处理O(nlgn) 查询O(1) 不支持在线查询 最小值可以合并但不支持分割 比如说我们知道[1,9]和[6,10]的最小值,我们可以知道[1,10]的最小值,但不能知道[6,9]的最小值 我们可以枚举以每个节点为起点经过k个节点的最值 但是预处理是O ...
分类:
编程语言 时间:
2018-06-17 11:01:45
阅读次数:
280
Python内置的一种数据类型是列表:list:#注释list是一种可变的有序的集合,可以随时添加和删除其中的元素 list里面的元素可以是不同的数据类型譬如整数、字符串、嵌套列表 len( )函数:获得list元素的个数 classmates.append('元素') 函数:追加新元素至list列 ...
分类:
编程语言 时间:
2018-06-13 16:31:12
阅读次数:
224