博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
RMQ求解->ST表
阅读量:7227 次
发布时间:2019-06-29

本文共 1694 字,大约阅读时间需要 5 分钟。

ST表

这是一种神奇的数据结构,用nlogn的空间与nlongn的预处理得出O(1)的区间最大最小值(无修)

那么来看看这个核心数组:ST[][]

ST[i][j]表示从i到i+(1<<j)的范围内的最大/最小值

那么来看看代码吧。

1 #include 
2 #include
3 using namespace std; 4 int ST[100010][21],n; 5 void makeST() 6 { 7 for(int j=1;j<=20;j++) 8 { 9 for(int i=1;i+(1<
<=n;i++) ST[i][j]=min(ST[i][j-1],ST[i+(1<<(j-1))][j-1]);10 }11 return;12 }13 int getpow(int x)14 {15 int ans=0;16 while((1<
<=x) ans++;17 return ans-1;18 }19 int main()20 {21 int m;22 scanf("%d%d",&n,&m);23 for(int i=1;i<=n;i++)24 {25 scanf("%d",&ST[i][0]);26 }27 makeST();28 int x,y;29 while(m--)30 {31 scanf("%d%d",&x,&y);32 int t=getpow(y-x+1);33 printf("%d ",min(ST[x][t],ST[y-(1<
P1816 忠诚
1 #include 
2 #include
3 using namespace std; 4 int ST[100010][21],n; 5 void makeST() 6 { 7 for(int j=1;j<=20;j++) 8 { 9 for(int i=1;i+(1<
<=n;i++) ST[i][j]=max(ST[i][j-1],ST[i+(1<<(j-1))][j-1]);10 }11 return;12 }13 int getpow(int x)14 {15 int ans=0;16 while((1<
<=x) ans++;17 return ans-1;18 }19 int main()20 {21 int m;22 scanf("%d%d",&n,&m);23 for(int i=1;i<=n;i++)24 {25 scanf("%d",&ST[i][0]);26 }27 makeST();28 int x,y;29 30 while(m--)31 {32 scanf("%d%d",&x,&y);33 int t=getpow(y-x+1);34 printf("%d\n",max(ST[x][t],ST[y-(1<
P3865 ST表模板

好,其实也没啥好说的,简单的一批不是吗?

 收回上句......

来看看紫题ST表+并查集

转载于:https://www.cnblogs.com/huyufeifei/p/8709970.html

你可能感兴趣的文章
Electron系列文章-主进程与渲染进程
查看>>
高性能缓存服务器 nuster v1.8.8.2 和 v1.7.11.2 发布
查看>>
教你快速入门ES6
查看>>
Python 爬虫十六式 - 第六式:JQuery的假兄弟-pyquery
查看>>
宜昌a货翡翠,包头a货翡翠
查看>>
【微信事业群】趣味面试算法题
查看>>
保守的国美再一次进击社交电商,前途未卜?
查看>>
git
查看>>
Python学习教程(Python学习路线):Python 3—手动创建迭代器
查看>>
说说如何在 Virtual Box 中新建 CentOS 虚拟机
查看>>
Cordova + Vue 实现点击两次退出应用
查看>>
JAVA 多用户商城系统b2b2c-Spring Cloud Stream 介绍
查看>>
spring cloud构建互联网分布式微服务云平台-SpringCloud集成项目简介
查看>>
基于房源的画像分析
查看>>
80% UI 初学者走过的弯路,你走了几条?
查看>>
文档和元素的几何滚动
查看>>
php 设计模式
查看>>
Java springcloud B2B2C o2o多用户商城 springcloud架构(八)springboot整合mongodb
查看>>
3年工作经验的Java程序员面试经过
查看>>
Mysql 批量写入数据,对于这类性能问题,你是如何优化的
查看>>