求助P1886,样例过了,但是RE,数组都开到一百万了QAQ

P1886 滑动窗口 /【模板】单调队列

Carrytkr @ 2022-09-24 14:03:19

代码:

#include <bits/stdc++.h>
using namespace std;
int n,m;
const int N=1e6+5;
int q1[N],q2[N];
int a[N];
int dandiao_queue()
{
    int head=1,tail=0;
    for(int i=1;i<=n;i++)
    {
        while(head<=tail&&q1[head]<i-m+1) head++;
        while(head<=tail&&a[i]<a[q1[tail]]) tail--;
        q1[++tail]=i;
        if(i>=m) 
        cout<<a[q1[head]]<<" ";
    }
    cout<<endl;
}
int old_queue()
{
    int head=1,tail=0;
    for(int i=1;i<=n;i++)
    {
        while(head<=tail&&q2[head]<i-m+1) head++;
        while(head<=tail&&a[i]>a[q2[tail]]) tail--;
        q2[++tail]=i;
        if(i>=m) cout<<a[q2[head]]<<" ";
    }
}
int main()
{
    cin>>n>>m;
    for(int i=1;i<=n;i++) scanf("%d",&a[i]);
    dandiao_queue();
    old_queue();
    return 0;
}

by __QHY__ @ 2022-09-24 14:32:24

你这代码能过啊!


by SwallowtailPhantasm @ 2022-10-02 21:04:34

同看第三篇题解表示咱也不知道,蹲个巨佬解答吧


by amxxxxx @ 2022-10-14 20:17:06

我拿去也ac了啊,哪里re了


|