st表的作用是可以快速的得到区间内的一个最值(最大值或最小值),不过它是静态的,即一旦初始化不能修改。
ST表它可以做到O(nlogn)预处理,O(1)查询最值。
ST表模板:
f[i][j]表示从i开始,长度是2^j的区间长度中最大值是多少

const int N=1e5+1;
int n,mx[N][20],mn[N][20],a[N];
int getmx(int l,int r){//区间[l,r]内的最大值int tmp=log2(r-l+1);return max(mx[l][tmp],mx[r-(1<<tmp)+1][tmp]);
}
int getmn(int l,int r){//区间[l,r]内的最小值int tmp=log2(r-l+1);return min(mn[l][tmp],mn[r-(1<<tmp)+1][tmp]);
}
void init()//构建ST表
{for(int i=1;i<=n;i++) mx[i][0]=mn[i][0]=a[i];for(int j=1;j<20;j++){for(int i=1;i+(1<<j)-1<=n;i++){mx[i][j]=max(mx[i][j-1],mx[i+(1<<j-1)][j-1]);mn[i][j]=min(mn[i][j-1],mn[i+(1<<j-1)][j-1]);}}
}

P3865 【模板】ST 表
P2880 [USACO07JAN] Balanced Lineup G

ACM入门之【ST表/RMQ】相关推荐

  1. POJ 3368 Frequent values 【ST表RMQ 维护区间频率最大值】

    传送门:http://poj.org/problem?id=3368 Frequent values Time Limit: 2000MS   Memory Limit: 65536K Total S ...

  2. 倍增算法入门 超详细解答+LCA+RMQ(ST表)+例题剖析

    目录 一.倍增算法 二.倍增算法的应用:求LCA(最近公共祖先)附模板题 三.倍增算法的应用:RMQ 问题(ST表)附模板题 一.倍增算法 要了解倍增之前,强烈建议大家先看一下这位大佬对倍增的解释:[ ...

  3. 倍增算法入门 超详细解答+LCA+RMQ(ST表)+例题剖析

    目录 一.倍增算法 二.倍增算法的应用:求LCA(最近公共祖先)附模板题 三.倍增算法的应用:RMQ 问题(ST表)附模板题 一.倍增算法 要了解倍增之前,强烈建议大家先看一下这位大佬对倍增的解释:[ ...

  4. RMQ问题-ST表倍增处理静态区间最值

    简介 ST表是利用倍增思想处理RMQ问题(区间最值问题)的一种工具. 它能够做到O(nlogn)预处理,O(1)查询的时间复杂度,效率相当不错. 算法 1.预处理 ST表利用倍增的思想.以洛谷的P38 ...

  5. 51Nod.1766.树上最远点对(树的直径 RMQ 线段树/ST表)

    题目链接 \(Description\) 给定一棵树.每次询问给定\(a\sim b,c\sim d\)两个下标区间,从这两个区间中各取一个点,使得这两个点距离最远.输出最远距离. \(n,q\leq ...

  6. 【牛客 - 371牛客OI周赛7-提高组B】小睿睿的询问(RMQ,ST表维护下标)

    题干: 链接:https://ac.nowcoder.com/acm/contest/371/B 来源:牛客网 小睿睿的n个妹纸排成一排,每个妹纸有一个颜值val[i].有m个询问,对于每一个询问,小 ...

  7. 线性结构 —— ST 表与 RMQ

    [概述] RMQ(Range Minimum/Maximum Query),是对于长度为 n 的数列 A,回答若干次询问 RMQ(i,j),返回数列 A 中下标在区间 [i,j] 中的最值,即:区间最 ...

  8. LCA RMQ+ST表学习笔记

    RMQ RMQ问题:在给定的一个长度位N的区间中,有M个询问,每次询问给出区间[L,R],求出区间段元素的 最大值/最小值.对于RMQ问题很容易想到遍历的做法,将区间[L,R]中的元素遍历一遍,即可寻 ...

  9. ACM模板——线段树树状数组ST表

    int bit[maxn],n; void init() {n = maxn;memset(bit,0,sizeof(bit)); } int sum(int i) {int s = 0;while( ...

最新文章

  1. Ubuntu14.04桥接网络设置与SSH登陆
  2. python切换ip群发邮件_python获取外网IP并发邮件的实现方法
  3. 分布式消息队列 Kafka
  4. 汽车引擎是怎么工作的
  5. 在vb中实现真正锁定的带自定义菜单的文本控件
  6. Kotlin — 在一个项目中混用 Java 与 Kotlin(混合开发)
  7. 在线CHM阅读器(2)——文件提取及关键文件解析
  8. 树莓派命令连接wifi_使用命令行设置树莓派的wifi网络
  9. wow Warlock shushia
  10. 【性能测试之问题分析】遇到内存告警百分之80以上的排查逻辑及实例分析(关键字:JVM、JAVA)
  11. type_traits之 析取 合取 否定
  12. 在电脑上显示未知发布者怎么办_Win7无法验证发行者、未知发布者的解决方法...
  13. 嫦娥奔月(神话,非航天器)
  14. 最新GLPI--优秀的linux开源IT资产管理系统
  15. 模电学习5. 耦合电容、去耦电容与旁路电容
  16. 误删path等环境变量(系统变量/用户变量)
  17. 超级强大的网格grid布局
  18. 小马智行进军前装量产,从自研域控制器入手?
  19. Vue-----Vue本地应用篇(2)
  20. 数学建模——种群竞争模型

热门文章

  1. Py之Pandas:Python的pandas库简介、安装、使用方法详细攻略
  2. webpack自定义loader并发布到npm
  3. Objective-C学习笔记_命令行参数获取
  4. OpenCV基本步骤(初步学习)
  5. 工具 - MyEclipse算法机最新8.6forSpring有效
  6. 华为LTE 模块AT 命令拨号上网流程
  7. ESP32实验板linux环境中下载固件报错解决办法
  8. Jlink SWD和Jtag下载失败总结
  9. TI-BLE协议栈的GAP
  10. R语言:预测算法常用包总结