总结
第一步:构造RMQ,变量为n。
第二步:记得ST表值初始化为inf/-inf,以及2^0倍赋值和转移方程的max/min修改
///第一步:构造RMQ,变量为n。
///第二步:记得ST表值初始化为inf/-inf,以及2^0倍赋值和转移方程的max/min修改
struct RMQ
{
vector<vector<int> >ST;
RMQ(int n=0)
{
ST.resize(n+1,vector<int>(21,inf));
for(int i=1;i<=n;i++)
ST[i][0]=pre[i];
for(int i=1;(1<<i)<=n;i++)
for(int j=1;j+(1<<i)-1<=n;j++)
ST[j][i]=min(ST[j][i-1],ST[j+(1<<i-1)][i-1]);
}
int query(int l,int r)
{
int k=log2(r-l+1);
return min(ST[l][k],ST[r-(1<<k)+1][k]);
}
};