求助,悬赏关注
查看原帖
求助,悬赏关注
769006
crzcqh楼主2023/10/19 10:08

太蒟蒻了,用的线性表,结果 RE 了,求调,悬关!

#include<bits/stdc++.h>
using namespace std;
int n,a[10010],Fmin[10010][22],Fmax[10010][22],ans;
int query(int l,int r){
	int k=log2(r-l+1);
	int Max=max(Fmax[l][k],Fmax[r-(1<<k)+1][k]);
	int Min=min(Fmin[l][k],Fmin[r-(1<<k)+1][k]);
	return Max-Min+l-r-1;
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++) cin>>a[i];
	for(int i=1;i<=n;i++) Fmin[i][0]=Fmax[i][0]=a[i];
	for(int i=1;i<=n;i++){
		for(int j=1;i+(1<<j)-1<=n;j++){
			Fmax[i][j]=max(Fmax[i][j-1],Fmax[i+(1<<(j-1))][j-1]);
			Fmin[i][j]=min(Fmin[i][j-1],Fmin[i+(1<<(j-1))][j-1]);
			cout<<i<<' '<<j<<' '<<Fmax[i][j]<<' '<<Fmin[i][j]<<endl;
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			ans=max(ans,query(i,j));
		}
	}
	cout<<ans;
	return 0;
}


2023/10/19 10:08
加载中...