void init_rmq(int n)
{
for(int i=1;i<=n;i++)
f[i][0]=a[i];
for(int j=1;j<=20;j++)
for(int i=1;i<=n;i++)
if(i+(1<<j)-1<=n)
f[i][j]=max(f[i][j-1],f[i+(1<<(j-1))][j-1]);
}
void query_rmq(int i,int j)
{
int k=log(j-i+1)/log(2);
return max(f[i][k],f[j-(1<<k)+1][k]);
}
RMQ区间最值 倍增求法
最新推荐文章于 2024-11-20 21:45:28 发布