ST
CCCCDEV_CCCC
志在四方少年,羡慕南飞的雁
展开
-
1542 最敏捷的机器人
1542 最敏捷的机器人给定一个长度为n的数列,再将连续的k个数每次计算最大值和最小值很简单,很水,很模板这一会做了好多这样的模板题,好爽#include<iostream>#include<cstdio>#include<algorithm>using namespace std;const int SIZE=1e5+5;int a[SIZE],log[SIZE];//10的次幂int st[SIZE][22][2];//第三维0存最大值,1存最小值原创 2021-08-09 15:06:07 · 158 阅读 · 0 评论 -
2251 质量检测
2251 质量检测给定一个长度为n的数列a,求前m件的最小的值,最后全部统计很显然,于是一个ST加上单调队列的问题,还是用两种方法来做感觉好水这道题和刚刚做过的一道很类似,只不过那一道很卡数据,这一个不需要ST#include <bits/stdc++.h>using namespace std;const int SIZE=1e6+5;int st[SIZE][25];int n,m;inline void build(){ for(int j=1;j<=20;原创 2021-08-09 14:18:37 · 56 阅读 · 0 评论 -
2880 Balanced Lineup G
2880 Balanced Lineup G提炼题目给定n个牛的身高,在给定q个询问,l到r之间最高和最低的牛的身高差看一下数据范围用O(n logn)复杂度的算法ACST表是专门的来求多个区间的最小值最大值的(英文简称RMQ),用的就是倍增的思想先用一个O(nlogn) 和一个ST方程来预处理然后用O(1)的复杂的来查询区间最值,这可真是一个神(mo)奇(ban)的算法#include <bits/stdc++.h>using namespace std;const int原创 2021-08-09 13:04:08 · 48 阅读 · 0 评论 -
1440 求m区间内的最小值
1440 求m区间内的最小值求一个区间的最小值,这不就是单调队列?不过我是来练习RMQ的刷了好多的绿题,突然感觉这种黄题就是一个小模板…先理解一下题意因该都能理解给定长度为n一个数列,给定一个限制窗口m,每一项都求前m个中的最小值这里我使用了两个方法来做,ST表和单调队列单调队列单调队列的概念非常好理解,只不过这里需要判断的窗口限制为m其实就是单调队列的板子,不过卡scanf,不要用cin#include<cstdio>using namespace std;int n,原创 2021-08-09 12:41:57 · 94 阅读 · 0 评论 -
ST算法
ST算法ST算法其实就是倍增的实现好东西时间复杂度O(NlogN)我们的得先看问题:给定一个长度N的序列A,在线回答,lr之间的数的最大值是多少。这是一个区间求最值的问题。其实ST就是用来求最值的,树上或者是线性上。其实这个题跟二分有点像,二分聪明,倍增比他还聪明。设f[i,j]为区间[i,i+2^j-1]的最大值,那么边界显然是Ai,我们把子区间的长度成倍增长。公式 :f[i,j]=max(f[i,j-1],f[i+2^j,j-1]),这就是两个区间的最大值,很像二分max(f[l][k]原创 2021-04-21 22:31:00 · 196 阅读 · 0 评论