求助双向队列的空间......

回复帖子

@自动CE机 2020-05-23 17:30 回复

rt

P1440 求m区间内的最小值

我用的一个STL双向队列,但是RE了!!!

如图 捕获.PNG 代码如下

#include<bits/stdc++.h>
using namespace std;
long long n,m,a[3000005],f[3000005];
deque<long long>q;
int main(){
    q.clear();
    cin>>n>>m;
    for(int i = 1;i <= n;i ++){
        scanf("%d",&a[i]);
    }
    cout<<0<<endl;
    q.push_back(1);
    for(int i = 2; i <= n;i ++){
        printf("%lld\n",a[q.front()]);
        while(i - q.front() + 1 > m && !q.empty()){
            q.pop_front();

        }
        while(a[i] < a[q.back()] && !q.empty()){
            q.pop_back();
        }
        q.push_back(i);
    }

    return 0;
}

求助dalao!!! QwQ

如果能说明一下其他STL的数组范围就更好啦!

@andyli  2020-05-23 17:33 回复 举报

@自动CE机

while (!q.empty() && i - q.front() + 1 > m) {
    q.pop_front();
}
while (!q.empty() && a[i] < a[q.back()]) {
    q.pop_back();
}
反馈
如果你认为某个帖子有问题,欢迎向洛谷反馈,以帮助更多的同学。



请具体说明理由,以增加反馈的可信度。