ST表0分求条
  • 板块P1816 忠诚
  • 楼主doooge
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/12/15 17:50
  • 上次更新2024/12/15 20:52:07
查看原帖
ST表0分求条
1286553
doooge楼主2024/12/15 17:50
#include<bits/stdc++.h>
using namespace std;
int lg[100010],st[100010][20];
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0),cout.tie(0);
	int n,m;
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>st[i][0];
	}
	lg[1]=0,lg[2]=1;
	for(int i=3;i<=n;i++){
	    lg[i]=lg[i>>1]+1;
	}
	for(int i=1;i<=lg[n];i++){
		for(int j=1;j<=n-(1<<i)+1;j++){
			st[j][i]=min(st[j][i-1],st[j+(1<<(i-1))][i-1]);
		}
	}
	while(m--){
		int l,r,lg2;
		cin>>l>>r;
		lg2=lg[r-l+1];
		cout<<min(st[l][lg2],st[r-(1<<lg2)+1][lg2])<<'\n';
	}
	return 0;
}
2024/12/15 17:50
加载中...