hihocoder1068 RMQ-ST算法
2024-09-01 11:34:04
思路:
这是ST表模板。遇到一道indeed笔试题需要用这个算法,顺便学习一下。那道题是说给定一个一维数组和一些查询[Li, Ri],要求计算[Li, Ri]区间内子段和的绝对值的最大值。解法是使用ST表计算所求区间内最大前缀和 - 最小前缀和即可。
实现:
#include <bits/stdc++.h>
using namespace std;
const int N = ;
int a[N], st[N][];
int log2(int x)
{
int res = -;
while (x)
{
x >>= ;
res++;
}
return res;
}
int main()
{
ios::sync_with_stdio(false);
int n, q, l, r;
cin >> n;
for (int i = ; i < n; i++) cin >> a[i];
for (int i = ; i < n; i++) st[i][] = a[i];
for (int j = ; ( << j) < n; j++)
{
for (int i = ; i + ( << j) - < n; i++)
{
st[i][j] = min(st[i][j - ], st[i + ( << j - )][j - ]);
}
}
cin >> q;
while (q--)
{
cin >> l >> r;
l--; r--;
int p = log2(r - l + );
cout << min(st[l][p], st[r - ( << p) + ][p]) << endl;
}
return ;
}
最新文章
- c#获取外网IP地址的方法
- 原创:从零开始,微信小程序新手入门宝典《一》
- 你应该知道的jQuery技巧 [转]
- 转:linux下安装或升级GCC4.8,以支持C++11标准
- HTTP状态码及其含义
- eclipes(小白)快捷键
- [ERROR] Failed to execute goal org.apache.maven.plugins:maven-jar-plugin:2.3.1:jar (default-jar) on
- bzoj 2428: [HAOI2006]均分数据
- I.MX6 Android USB Touch eGTouchA.ini文件存放
- android 98 MediaPlayer+SurfaceView播放视频
- libiconv_百度百科
- cocos2dx进阶学习之CCAction
- android activity中监听View测量完成的4种方式
- JS内置对象有哪些?
- @ResponseBody 返回乱码 的解决办法
- python网络聊天器多线程版
- Psi Probe 安装及使用说明
- beanutils的使用
- using Redis in .net core
- map集合中value()、keySet()、entrySet()区别
热门文章
- Swift Optional Chaining
- C++之static类成员,static类成员函数
- [Java] 练习题001:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
- Flutter实战视频-移动电商-55.购物车_底部结算栏UI制作
- 玲珑OJ1088【蜜汁尺取】
- Lightoj 1129【字典树】
- HDU2489【状压枚举】
- laravel 安装配置前准备
- iTween基础之iTweenPath浅析(自定义路径移动)
- Codevs 3112 二叉树计数