ST表

struct ST_Table{
	int Log[NUM],f[NUM][20];
	void init(int *a,int n){
		Log[1]=0;
		for(int i=2;i<=n;++i) Log[i]=Log[i>>1]+1;
		for(int i=1;i<=n;++i) f[i][0]=a[i];
		for(int j=1;j<=Log[n];++j){
			for(int i=1;i<=n-(1<<j)+1;i++){
				f[i][j]=max(f[i][j-1],f[i+(1<<(j-1))][j-1]);
			}
		}
	}
	int Max(int x,int y){
		int l=Log[y-x+1];
		return max(f[x][l],f[y-(1<<l)+1][l]);
	} 
}st;

posted @ 2026-06-27 19:10  LZYXT  阅读(4)  评论(0)    收藏  举报