当前位置:网站首页>ST表(动态规划倍增思路离线维护区间极值问题)
ST表(动态规划倍增思路离线维护区间极值问题)
2022-07-29 14:23:00 【阐上】
Acwing

C o d e : Code: Code:
#include<bits/stdc++.h>
#include<unordered_map>
#define debug cout << "debug--- "
#define debug_ cout << "\n---debug---\n"
#define oper(a) operator<(const a& ee)const
#define forr(a,b,c) for(int a=b;a<=c;a++)
#define mem(a,b) memset(a,b,sizeof a)
#define cinios (ios::sync_with_stdio(false),cin.tie(0),cout.tie(0))
#define all(a) a.begin(),a.end()
#define sz(a) (int)a.size()
#define endl "\n"
#define ul (u << 1)
#define ur (u << 1 | 1)
using namespace std;
typedef unsigned long long ull;
typedef long long ll;
typedef pair<ll, int> PII;
const int N = 2e5 + 10, M = 2e3 + 10, mod = 1e9 + 7;
int INF = 0x3f3f3f3f; ll LNF = 0x3f3f3f3f3f3f3f3f;
int n, m, B = 10, ki;
int f[N][18], a[N];
int lg[N];//预处理log2(N)是多少,可以加速很多
void init() {
//倍增动态规划
//f[i][j]维护 i 点开始长度为 2^j 段的最大值
for (int j = 0; j < 18; j++)
for (int i = 1; i + (1 << j) - 1 <= n; i++)
if (!j)f[i][j] = a[i];
else f[i][j] = max(f[i][j - 1], f[i + (1 << j - 1)][j - 1]);
}
int query(int l, int r) {
int len = r - l + 1;
int k = lg[len];
return max(f[l][k], f[r - (1 << k) + 1][k]);
//找一个最大的不会超过长度(下取整)的次方数 k
//前后两段取极值,包含了区间
}
void solve() {
cin >> n;
lg[0] = -1;
forr(i, 1, n)cin >> a[i], lg[i] = lg[i >> 1] + 1;//递推
init();
cin >> m;
while (m--)
{
int l, r;
cin >> l >> r;
cout << query(l, r) << endl;
}
}
int main() {
cinios;
int T = 1;
for (int t = 1; t <= T; t++) {
solve();
}
return 0;
}
/* */
边栏推荐
猜你喜欢
随机推荐
已解决SyntaxError: invalid character in identifier
通过二维顺序表实现杨辉三角
A review of deep learning for beginners!
什么是异构计算
ArcGIS Pro与ArcGis区别
Nacos基础教程
EA&UML日拱一卒-活动图::Object actions(续)
为什么字符串使用final关键字
【模板引擎】微服务学习笔记六:freemarker模板引擎的常用命令介绍
这个 MySQL bug,99% 的人会踩坑!
【FreeSwitch开发实践】自定义模块创建与使用
如何使用SparkSQL做一些简单的数据分析和可视化展示?
面对互联网的裁员潮,我们该何去何从?
RAMAN CONFIGURE 命令都能实现哪些功能
深陷盈利困境,“寒冬”中也要二次递表,北森上市迫切
AVH部署实践 (一) | 在Arm虚拟硬件上部署飞桨模型
城市污水处理过程模型预测控制研究综述
Google Cloud X Kyligence|如何从业务视角管理数据湖?
FPGA刷题——跨时钟域传输(FIFO+打拍+握手)
Nine kinds of way, teach you to read the resources files in the directory path







