题目背景 这是一道ST表经典题——静态区间最大值 请注意最大数据时限只有0.8s,数据强度不低,请务必保证你的每次查询复杂度为 O(1)O(1)。若使用更高时间复杂度算法不保证能通过。 如果您认为您的代码时间复杂度正确但是 TLE,可以尝试使用快速读入: inline int read() { in ...
分类:
编程语言 时间:
2020-06-29 13:51:12
阅读次数:
67
Java8新特性 https://blog.csdn.net/sanri1993/article/details/101176712 jdk1.7和1.8的区别: 添加了红黑树,增加查询效率 gc算法(垃圾回收算法) https://www.jianshu.com/p/3fc4450e1bbd st ...
分类:
编程语言 时间:
2020-05-12 13:58:05
阅读次数:
69
1 #include<bits/stdc++.h> 2 3 using namespace std; 4 5 const int N = 1e5 + 5; 6 7 int f[N][30],a[N]; 8 9 int read(){ 10 int x=0,flag=1; 11 char ch=get ...
分类:
编程语言 时间:
2020-03-11 19:34:24
阅读次数:
71
【在线算法】所谓在线算法就是说,每次请求及时处理,处理完之后,直接返回,然后等待处理下一次请求。所以一般在线算法有个预处理过程,预处理数据之后,能够更快速的处理每次请求的结果,但是会有一个相对长一点的预处理过程。(e.g.ST算法) 【离线算法】所谓离线算法只是在来了非常多的请求之后,一次性处理多个 ...
分类:
编程语言 时间:
2020-02-07 14:45:51
阅读次数:
69
一: 区间问题:什么时候用线段树,什么时候用ST 如果需要动态维护,需要添加或者删除,那么就必须用到线段树,线段树的单次查询时间为O(logn),如果查询量大还是很浪费时间。 在不需要动态维护的时候,ST算法的查询速度可以到达O(1) 二: 【什么样的问题适合ST算法】例如,RMQ问题和RGQ问题适 ...
分类:
其他好文 时间:
2020-02-07 14:42:26
阅读次数:
76
RMQ是询问某个区间内的最大值或最小值的问题,ST算法可以求解RMQ问题.ST算法通常用在要多次询问某一些区间的问题中,相比于线段树,它的程序实现更加简单,运行速度更快,它可以做到O(nlogn)的预处理,O(1)回答每个问题.使用ST算法的条件是没有修改操作,因此它适用于没有修改操作并且访问次数较多(10^6级别甚至更大)的情况.1.预处理ST算法的原理实际上是动态规划,首先要知道f数组的含义,
分类:
编程语言 时间:
2020-01-24 10:57:33
阅读次数:
101
ST算法能在O(NlogN)时间内对数列a预处理, 以O(1)的时间复杂度在线回答”数列a中下标在l~r之间的数的最大(小)值是多少“预处理:1)f[i][j]表示数列a中下标在子区间[i,i+2^j-1]里的数的最大(小)值, 即i开始的2^j个数的最大(小)值2)f[i][j]=max(f[i] ...
分类:
编程语言 时间:
2020-01-23 21:16:13
阅读次数:
130
ST算法能在O(NlogN)时间内对数列a预处理,以O(1)的时间复杂度在线回答“数列a中下标在l~r之间的数的最大(小)值是多少预处理:f[i][j]表示数列a中下标在子区间[i,i+2^j-1]里的数的最大(小)值,即i开始的2^j个数的最大(小)值f[i][j]=max(f[i][j-1],f ...
分类:
编程语言 时间:
2020-01-23 19:48:21
阅读次数:
81
XGboost算法 XGBoost是GBDT算法的一种改进,是一种常用的有监督集成学习算法;是一种伸缩性强、便捷的可并行构建模型的GradientBoosting算法。 原理是:在GBDT目标函数的基础上加入惩罚项,如下图绿框。通过限制树模型的叶子节点的个数和叶子节点的值来降低模型复杂度,从而防止过 ...
分类:
编程语言 时间:
2020-01-01 17:17:34
阅读次数:
105
[TOC] 一、ST算法 ST算法(Sparse Table Algorithm)是用于解决RMQ问题(区间最值问题,即Range Maximum/Minimum Question)的一种著名算法。 ST算法能在复杂度为$O(NlogN)$的预处理后,以$O(1)$的复杂度在线处理序列区间内的最大值 ...
分类:
编程语言 时间:
2019-11-03 12:41:51
阅读次数:
91