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;

浙公网安备 33010602011771号