RMQ区间最值 倍增求法

    xiaoxiao2026-05-28  0

    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]); }
    转载请注明原文地址: https://ju.6miu.com/read-1310152.html
    最新回复(0)