今天困得不行,就看了个小算法st,其实和线段树的作用一样,

不过这个算法没有用到数据结构,使用二进制优化的

是O(log(n)n)的时间预处理,然后以O(1)的时间返回(l,r)上的最大或最小

#include <iostream>
#include <cmath>
#include <cstdio>
#include <string>
#include <cstring> using namespace std;
typedef long long ll; const int N =1e5 +;
int a[N];
int n,m;
int f[N][];
void st_prework()
{
for(int i=;i<=n;i++)f[i][]=a[i];
int t = log(n)/log();
for(int j=;j<=t;j++)
{
for(int i=;i<=n-(<<j)+;i++)
{
f[i][j]=max(f[i][j-],f[i+(<<(j-))][j-]);
}
}
}
int main()
{
cin >> n >> m;
for(int i= ;i<=n;i++)
{
scanf("%d",&a[i]);
}
st_prework();
while(m--)
{
int l,r;
scanf("%d%d",&l,&r);
int k=log(r-l+)/log();
printf("%d\n", max(f[l][k],f[r-(<<k)+][k]));
}
return ;
}

st的题目:

P2880 [USACO07JAN]平衡的阵容Balanced Lineup 题解

#include <iostream>
#include <cmath>
#include <cstdio>
#include <string>
#include <cstring> using namespace std;
typedef long long ll; const int N =1e5 +;
int a[N];
int n,m;
int f[N][],d[N][];
void st_prework()
{
for(int i=;i<=n;i++)f[i][]=a[i],d[i][]=a[i];
int t = log(n)/log();
for(int j=;j<=t;j++)
{
for(int i=;i<=n-(<<j)+;i++)
{
f[i][j]=max(f[i][j-],f[i+(<<(j-))][j-]);
d[i][j]=min(d[i][j-],d[i+(<<(j-))][j-]);
}
}
}
int main()
{
cin >> n >> m;
for(int i= ;i<=n;i++)
{
scanf("%d",&a[i]);
}
st_prework();
while(m--)
{
int l,r;
scanf("%d%d",&l,&r);
int k=log(r-l+)/log();
printf("%d\n", max(f[l][k] ,f[r-(<<k)+][k]) - min(d[l][k],d[r - (<<k)+][k]));
}
return ;
}

P2251 质量检测

#include <iostream>
#include <cmath>
#include <cstdio>
#include <string>
#include <cstring> using namespace std;
typedef long long ll; const int N =1e5 +;
int a[N];
int n,m;
int f[N][],d[N][];
void st_prework()
{
for(int i=;i<=n;i++)f[i][]=a[i],d[i][]=a[i];
int t = log(n)/log();
for(int j=;j<=t;j++)
{
for(int i=;i<=n-(<<j)+;i++)
{
d[i][j]=min(d[i][j-],d[i+(<<(j-))][j-]);
}
}
}
int main()
{
cin >> n >> m;
for(int i= ;i<=n;i++)
{
scanf("%d",&a[i]);
}
st_prework();
for(int i=;i<=n-m+;i++)
{
int k =log(m)/log();
printf("%d\n",min(d[i][k],d[i+m- - (<<k)+][k]));
}
return ;
}

基本算法 st的更多相关文章

  1. 【基础算法-ST表】入门 -C++

    前言 学了树状数组看到ST表模板跃跃欲试的时候发现完全没思路,因为给出的查询的时间实在太短了!几乎是需要完成O(1)查询.所以ST表到底是什么神仙算法能够做到这么快的查询? ST表 ST表是一个用来解 ...

  2. 线段树(two value)与树状数组(RMQ算法st表)

    士兵杀敌(三) 时间限制:2000 ms  |  内存限制:65535 KB 难度:5 描述 南将军统率着N个士兵,士兵分别编号为1~N,南将军经常爱拿某一段编号内杀敌数最高的人与杀敌数最低的人进行比 ...

  3. LCA在线算法ST算法

    求LCA(近期公共祖先)的算法有好多,按在线和离线分为在线算法和离线算法. 离线算法有基于搜索的Tarjan算法较优,而在线算法则是基于dp的ST算法较优. 首先说一下ST算法. 这个算法是基于RMQ ...

  4. 详解RMQ-ST算法 ST模板

    RMQ问题是求解区间最值的问题. 这里分析的是ST算法,它可以对所有要处理的数据做到O(nlogn)的预处理,对每个区间查询做到O(1)查询 ST算法本质是一个DP的过程 这里通过举一个求最大值实例来 ...

  5. [CF 191C]Fools and Roads[LCA Tarjan算法][LCA 与 RMQ问题的转化][LCA ST算法]

    参考: 1. 郭华阳 - 算法合集之<RMQ与LCA问题>. 讲得很清楚! 2. http://www.cnblogs.com/lazycal/archive/2012/08/11/263 ...

  6. SPOJ RPLN (模板题)(ST算法)【RMQ】

    <题目链接> 题目大意:给你一段序列,进行q次区间查询,每次都输出询问区间内的最小值. 解题分析: RMQ模板题,下面用在线算法——ST算法求解.不懂ST算法的可以看这篇博客  >& ...

  7. LCA(最近公共祖先)——dfs+ST 在线算法

    一.前人种树 博客:浅谈LCA的在线算法ST表 二.沙场练兵 题目:POJ 1330 Nearest Common Ancestors 题解博客:http://www.cnblogs.com/Miss ...

  8. [总结]RMQ问题&ST算法

    目录 一.ST算法 二.ST算法の具体实现 1. 初始化 2. 求出ST表 3. 询问 三.例题 例1:P3865 [模板]ST表 例2:P2880 [USACO07JAN]平衡的阵容Balanced ...

  9. 浅谈ST表

    发现自己学的一直都是假的ST表QWQ. ST表 ST表的功能很简单 它是解决RMQ问题(区间最值问题)的一种强有力的工具 它可以做到$O(nlogn)$预处理,$O(1)$查询最值 算法 ST表是利用 ...

随机推荐

  1. QFramework 使用指南 2020(五):脚本生成(3)生成 Prefab

    在上一篇,我们简单介绍了 ViewController 的嵌套实现. 在这一篇,我们学习 ViewController 脚本生成的最后一个功能,即:生成 Prefab. 实际上这个功能非常简单. 我们 ...

  2. ubuntu 右上角网络图标不见了

    sudo service network-manager stop sudo rm /var/lib/NetworkManager/NetworkManager.state sudo service ...

  3. mfc中循环显示图片

    UINT CPalmIdentDlg::UpdateCImg(LPVOID p) { struct params *pa = (struct params*)p; int *imgarray = pa ...

  4. 【VS开发】Return与Exit的区别

    1. exit用于结束正在运行的整个程序,它将参数返回给OS,把控制权交给操作系统:而return 是退出当前函数,返回函数值,把控制权交给调用函数. 2. exit是系统调用级别,它表示一个进程的结 ...

  5. ZUI(BootStrap)使用vue动态插入HTMl所创建的data-toggle事件初始化方法

    用ZUI的图片浏览:lightbox 写静态html的时候是有预览效果的,使用了vue动态加载就没有效果了, 网上的说法是动态生成的没有激活事件:ZUI(BootStrap)动态插入HTMl所创建的d ...

  6. [转帖]被HTTP/2漏洞拖累,所有Kubernetes版本受影响

    被HTTP/2漏洞拖累,所有Kubernetes版本受影响 https://www.kubernetes.org.cn/5746.html 服务很重要啊... 低版本都不解决安全问题了.. 不过HTT ...

  7. 【AI】【计算机】【中国人工智能学会通讯】【学会通讯2019年第01期】中国人工智能学会重磅发布 《2018 人工智能产业创新评估白皮书》

    封面: 中国人工智能学会重磅发布 <2018 人工智能产业创新评估白皮书> < 2018 人工智能产业创新评估白皮书>由中国人工智能学会.国家工信安全中心.华夏幸福产业研究院. ...

  8. LeetCode 第 164 场周赛

    访问所有点的最小时间 不难看出,从点(x1,y1) 到 (x2,y2) 的步数需要 min(dx,dy),其中 dx = abs(x1-x2),dy = abs(y1-y2) class Soluti ...

  9. 虚拟机(VM)安装openwrt-koolshare软路由

    ⒈创建虚拟机 **软路由选择Windows操作系统,因为我们需要在PE环境中进行软路由的写入,固件类型选择BIOS,网络类型选择使用仅主机模式网络,虚拟磁盘类型选择IDE[一定要选择IDE模式],SC ...

  10. python--基本语法与变量

    python基本语法与变量 python语句的缩进 Python代码块使用缩进对齐表示代码逻辑,Python每段代码块缩进的空白数量可以任意,但要确保同段代码块语句必须包含相同的缩进空白数量.建议在代 ...