st查询算法模板题
(23条消息) RMQ算法_风流学霸段公子的博客-CSDN博客
1270. 数列区间最大值
输入一串数字,给你 M 个询问,每次询问就给你两个数字 X,Y,要求你说出 X 到 Y 这段区间内的最大数。
输入格式
第一行两个整数 N,M 表示数字的个数和要询问的次数;
接下来一行为 N 个数;
接下来 M 行,每行都有两个整数 X,Y。
输出格式
输出共 M 行,每行输出一个数。
数据范围
1≤N≤10^5,
1≤M≤10^6
1≤X≤Y≤N
数列中的数字均不超过2^31−1
输入样例:
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<string>
#include<cstring>
#include<cmath>
#include<ctime>
#include<algorithm>
#include<utility>
#include<stack>
#include<queue>
#include<vector>
#include<set>
#include<map>
using namespace std;
typedef long long LL;
const int N = 1e5 + 5;
int n, m;
int num[N], dp[N][50];
int main() {
cin >> n >> m;
for (int i = 0; i < n; i++) {
scanf("%d", &num[i]);
}
int k = log2(n);
for (int i = 0; i < n; i++) {
dp[i][0] = num[i];
}
for (int i = 1; 1 << i < n; i++) {
for (int j = 0; j + (1 << i) <= n; j++) {
dp[j][i] = max(dp[j][i - 1], dp[j + (1 << i - 1)][i - 1]);
}
}
for (int i = 1,l,r; i <= m; i++) {
scanf("%d%d", &l, &r);
k = log2(r - l + 1);
int ans = max(dp[l - 1][k], dp[r - (1 << k)][k]);
cout << ans << endl;
}
return 0;
}
10 2
3 2 4 5 6 8 1 2 9 7
1 4
3 8
输出样例:
5
8
从1开始的代码:
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<string>
#include<cstring>
#include<cmath>
#include<ctime>
#include<algorithm>
#include<utility>
#include<stack>
#include<queue>
#include<vector>
#include<set>
#include<map>
using namespace std;
typedef long long LL;
const int N = 1e5 + 5;
int n, m;
int num[N], dp[N][50];
int main() {
cin >> n >> m;
for (int i = 1; i <= n; i++) {
scanf("%d", &num[i]);
}
int k = log2(n);
for (int i = 1; i <= n; i++) {
dp[i][0] = num[i];
}
for (int i = 1; 1 << i <= n; i++) {
for (int j = 1; j + (1 << i)-1 <= n; j++) {// 这之所以是 (1 << i)-1是因为这是个左闭右开区间
dp[j][i] = max(dp[j][i - 1], dp[j + (1 <<i-1)][i - 1]);
}
}
for (int i = 1,l,r; i <= m; i++) {
scanf("%d%d", &l, &r);
k =(int)log2(r - l + 1);
int ans = max(dp[l][k], dp[r - (1 << k)+1][k]);
cout << ans << endl;
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】