首页 > 其他分享 >ST表

ST表

时间:2024-07-08 22:21:43浏览次数:2  
标签:max len ST 枚举 开头 长度

ST表

一、引入

如何解决区间最值问题?
最容易想到的就是暴力枚举,但是很明显,速度过于慢,所以引入ST表

二、ST表

我们令f[i][len]表示以i开头长度为1<<len的最大值
由此可以突出初始值为f[i][0] = a[i]
接下来思考转移,我们就是要把f[i][len]拆成两个更容易就觉得问题。那么就可以推出f[l][len] = max(f[l][len-1],f[l+(1<<(len-1))][len-1]),因为最大值是可以重叠的

for (int i = 1;i <= n;i++) f[i][0] = a[i];//初始化
for (int len = 1;1<<len <= n;len++)
{
	for (int l = 1;l+(1<<len)-1 <= n;l++)
	{
		f[l][len] = max(f[l][len-1],f[l+(1<<(len-1))][len-1]);//转移
	}
}

三、应用

1.实现添加操作

只需要枚举长度就可以算出开头,这样直接转移

2.双关键字问题

与上面模板几乎没区别,只需要在取max或min是改变即可

标签:max,len,ST,枚举,开头,长度
From: https://www.cnblogs.com/xxsap/p/18290783

相关文章

  • 虚拟机的建立(VMware Workstation Pro)
    创建虚拟机下载vm和Ubuntu镜像vm:VMwareDesktopHypervisorsforWindows,Linux,andMac密钥:网上搜一大堆iso:Alternativedownloads|Ubuntu选择镜像并创建实例完成......
  • ROS 2 Humble Install
    设置区域确保您的语言环境支持UTF-8。如果您处于最小环境(例如docker容器),语言环境可能像一样最小POSIX。我们使用以下设置进行测试。但是,如果您使用其他支持UTF-8的语言环境,应该没问题。locale#checkforUTF-8sudoaptupdate&&sudoaptinstalllocalessudoloca......
  • 单片机知多少之STM32F103-GPIO输出应用篇
    示例:选择GPIOB做流水灯控制逻辑将8个发光二极管的负端分别接入PB0~PB7,正端接5V电源,当配置GPIO为低电平时,回路导通,二极管开始工作,亮灯;当配置GPIO为高电平时,回路等电位断开,二极管不工作,灭灯,使GPIO输出按一定顺序执行,即流水灯。编写代码变量定义:GPIO_InitTypeDefGPIO_InitSt......
  • Milvus lite start 及存储策略
    背景今天开始写下Milvus,为了方便,我直接使用的是 milvus-lite版本,default情况下,你可能不知道他到底将db存储到什么位置了。启动default-server,看下Milvus的start及存储逻辑主逻辑defstart(self):self.config.resolve()_initialize_data_files(self.config......
  • 【数据结构】—— 单链表(single linked list)
    文章目录1、单链表的定义优点和缺点单链表的构成2、单链表的创建初始化:3、单链表的接口实现打印尾插头插尾删头删查找在指定位置之前插入在指定位置之后插入删除指定位置的节点删除指定位置之后的节点销毁链表4、源代码1、单链表的定义单链表(SinglyLinkedList......
  • Android 10.0 SystemUI启动流程
    1、手机开机后,Android系统首先会创建一个Zygote(核心进程)。2、由Zygote启动SystemServer。3、SystemServer会启动系统运行所需的众多核心服务和普通服务、以及一些应用及数据。例如:SystemUI启动就是从SystemServer里启动的。4、进入锁屏界面,开机完成。SystemServer中......
  • volatile和static的区别
    作用范围和变量类型:static关键字用于创建类级别的变量或方法,所有类的实例共享同一个static变量的副本。它还可以用于方法、初始化块和内部类。相比之下,volatile仅用于声明变量,确保在多线程环境中的可见性,使所有线程都能看到最新的变量值。内存模型:static变量在内存中有......
  • rust线程池
    #![allow(unused)]usestd::sync::{mpsc,Arc,Mutex};usestd::thread;//定义消息类型,可以是新任务或终止信号enumMessage{NewJob(Job),Terminate,}//定义线程池结构体pubstructThreadPool{workers:Vec<Worker>,//sender:mpsc::Sender<J......
  • VSCode中 npm install 安装依赖包太慢了,一直加载不出来问题解决
    1.问题描述采用VSCode打开别人传过来的项目时,需要先加载依赖包,一般是通过终端来加载:终端中输入npminstall. 但是采用npminstall安装依赖包出现问题,一直加载不完,卡到某一地方,如图: 2.尝试解决2.1采用淘宝镜像,依旧慢,最后证书过期2.2采用pnpminstall(做了一部分)npmins......
  • 跟《经济学人》学英文:2024年07月06日这期:How Starbucks caffeinates local economies
    HowStarbuckscaffeinateslocaleconomiesCallitthefrappuccinoeffectfrappuccino:星冰乐星巴克如何刺激当地经济:称之为星冰乐效应原文:Starbucksoffersendlessopportunitiesforinnovation.Partsofsocialmediadelightinhackingthechain’smenuto......