st表的介绍

s t st st表是一种用于解决 R M Q RMQ RMQ问题的工具, O ( n l o g n ) O(nlogn) O(nlogn)的时间建表,只要 O ( 1 ) O(1) O(1)的时间查询,可以很好地完成查询任务。但是美中不足的一点是, s t st st表不支持修改操作,因此有涉及修改的题目,请使用线段树或者其他数据结构。

s t st st表的建表方法

st表的表示方法

st表用 s t i , j st_{i,j} sti,j表示 [ j , j + i 2 − 1 ] [j,j+i^2-1] [j,j+i21]中的区间最小值。
那么怎么进行建表呢?
首先
s t 0 , j st_{0,j} st0,j必定等于 a j a_j aj
所以递推起点就出来了
那么怎么进行状态转移呢?
看下面这张图
请添加图片描述
应该很容易理解吧
上面大区间的最值,就是下面两个小区间的最值的最值。
因此,状态转移方程为
s t i , j = m a x ( s t i − 1 , j , s t i − 1 , j + 2 i − 1 ) st_{i,j}=max(st_{i-1,j},st_{i-1,j+2^{i-1}}) sti,j=max(sti1,j,sti1,j+2i1)

建表代码

for(int i=1;i<=n;++i){
	scanf("%d",a+i);
	lg[i]=lg[i/2]+1;//lg[i]为floor(log2(i))
}
for(int i=1;i<=31;++i)bi[i]=bi[i-1]*2;//bi[i]=2^i
for(int i=1;i<=n;++i){
	st[0][i]=a[i];
}
for(int i=1;i<=lg[n];++i){
	for(int j=1;j+bi[i]-1<=n;++j){
		st[i][j]=max(st[i-1][j],st[i-1][j+bi[i-1]]);
	}
}

查询方法

查询的方法其实也很简单
首先求出来一个值
即询问区间长度为 2 2 2的几次方
那也就是 l g lg lg数组
设这个值为 t t t区间左右为 l , r l,r l,r
那么 t = l g [ r − l + 1 ] t=lg[r-l+1] t=lg[rl+1]
同时 2 t 2^t 2t小于 [ l , r ] [l,r] [l,r]的长度
那么再来一张图
请添加图片描述
可以看出来要求的 [ l , r ] [l,r] [l,r]的区间最值就是两个小区间的最值的最值。(有重合也不会有影响)
因此查询方法为

scanf("%d%d",&l,&r);
t=lg[r-l+1];
printf("%d\n",max(st[t][l],st[t][r-bi[t]+1]));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ST7789是一款彩色TFT液晶控制驱动集成电路,通常用于小尺寸显示设备,如智能手、智能家居设备和嵌入式系统等。ST7789中文手册主要介绍了该芯片的功能、电气特性、接口定义、寄存器设置和使用方法等内容。 手册首先对ST7789芯片的特性进行了介绍。它支持最高240x320像素的分辨率,可以显示262,144种不同颜色,并且具有高亮度和清晰度。该芯片还支持SPI接口和I2C接口,以满足不同应用场景的需求。 接下来,手册详细描述了ST7789的引脚定义和电气特性。它包含了电源引脚、数据引脚、复位引脚和背光引脚等,通过这些引脚可以实现与其他硬件设备的连接和通信。同时,手册还提供了电气特性的参数,如工作电压范围、工作温度范围和功耗等。 在使用ST7789芯片时,开发者需要了解和配置寄存器的设置。手册中详细列出了ST7789的寄存器地址和寄存器功能,开发者可以通过对寄存器进行编程来实现不同的显示效果。例如,可以设置显示窗口的起始位置、传输数据的格式、背光的亮度和对比度等。 最后,手册还提供了ST7789的使用方法和建议。它介绍了初始化流程、数据传输的模式和时序要求。对于初次使用ST7789的开发者来说,手册还给出了一些常见问题的解答和调试技巧,以帮助他们更好地理解和使用ST7789。 总结来说,ST7789中文手册是一份非常重要的参考资料,它提供了关于ST7789芯片的详细信息和使用方法,对于开发者来说是非常有价值的。通过仔细阅读手册,开发者可以了解如何正确地配置和控制ST7789芯片,实现高质量的彩色显示效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值