RMQ求调
查看原帖
RMQ求调
889828
Wangbingxiang楼主2024/9/19 22:14

RMQ求调(本蒟蒻不怎么会,勿喷)

#include<bits/stdc++.h>
using namespace std;
const long long N=1000001;
long long loog[N];
long long n,m,a[N+4],st[N][31],lg;
int main(){
	loog[1]=0;
	cin>>n>>m;
	for(long long i=2;i<=m;++i){
		loog[i]=loog[i>>1]+1;
	}
	lg=loog[m];
	for(long long i=1;i<=n;++i) cin>>a[i];
	for(long long j=0;j<=21;++j){
		for(long long i=1;i<=n-(1<<j)+1;++i){
			if(j==0) st[i][j]=a[i];
			else st[i][j]=min(st[i][j-1],st[i+1<<(j-1)][j-1]);
		}
	}
	for(long long i=1;i<=n-m+1;++i){
		cout<<min(st[i][lg],st[i+m-1-(1<<lg)+1][lg])<<endl;
	}
	return 0;
}

2024/9/19 22:14
加载中...