70ptsTLE求调喵
查看原帖
70ptsTLE求调喵
1041662
C0ns1st楼主2025/1/24 09:01

已经试过各种方法但是好像还是TLE最后三个点
ST表做法

代码在这

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int a[N];
int st[N][110];
int m,n;
int x,y;
int lg[N];
int query(int x,int y) {
	int t=lg[y-x+1];
	return max(st[x][t],st[y-(1<<t)+1][t]);
}
int main() {
	ios::sync_with_stdio(false);
	cin>>m>>n;
	for(int i=1; i<=m; i++) {
		int k=i,t=0;
		while(k) {
			k=k>>1;
			t++;
		}
		t--;
		lg[i]=t;
	}
	for(int i=1; i<=m; i++) {
		cin>>st[i][0];
	}
	for(int j=1; j<=22; j++) {
		for(int i=1; i<=m; i++) {
			if(i+(1<<j)-1<=m) st[i][j]=max(st[i][j-1],st[i+(1<<j-1)][j-1]);
		}
	}
	for(int i=1; i<=n; i++) {
		cin>>x>>y;
		cout<<query(x,y)<<'\n';
	}
	return 0;
}

qwq

2025/1/24 09:01
加载中...