蒟蒻求助 ST表全部RE

P1440 求m区间内的最小值

zcy2333 @ 2018-11-05 08:00:56

    #include<bits/stdc++.h>
    using namespace std;
    int f[2000000][21];
    int n,m;
    void RMQ()
    {
        for(int j=1;j<=log(n)/log(2);j++)
        for(int i=1;i<=n-(1<<j)+1;i++)
        f[i][j]=min(f[i][j-1],f[i+(1<<(j-1))][j-1]);
    }
    int search(int l,int r)
    {
        int t=log(r-l+1)/log(2);    
        return min(f[l][t],f[r-(1<<t)+1][t]);
    }
    int main()
    {

        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;i++)
        cin>>f[i][0];
        RMQ();
        for(int i=1;i<=n;i++)
        {       int l;
            if(i-m<1) l=1;
            else if(i==1) l=0;
            else l=i-m;
            int r=i-1;
            printf("%d\n",search(l,r));
        }
        return 0;
    }
下载第一个数据点,在本地测试答案都是对的..

by Ruirui_170219 @ 2018-11-05 08:04:53

f[2000000][21]

这是什么东东


|