题解 P2032 【扫描】

· · 题解

STL大法好(雾

就用队列就好了,一定记得要优先考虑数据结构

(挑战最短代码QAQ,然后我输了

每次判断队头是否符合要求,将不符合要求的删除掉

#include<bits/stdc++.h>
using namespace std;
const int N=1000005;
int n,k;
struct node{int v,id;}a[N];
deque<node> qmin,qmax;
int main()
{
    cin>>n>>k;
    for(int i=1;i<=n;i++)cin>>a[i].v,a[i].id=i;
    for(int i=1;i<=n;i++)
    {
        while(!qmax.empty()&&qmax.back().v<=a[i].v)qmax.pop_back();
        qmax.push_back(a[i]);
        if(qmax.front().id==i-k)qmax.pop_front();
        if(i>=k)cout<<qmax.front().v<<endl;
    }
    return 0;
}

这题其实可以用来练习线段树,但我不会啊,我太菜了,,,

另外推荐P1886和P1440,是三倍经验哦

打题解不易,留个Zan再走吧

虽然自己写代码很慢,收获的却是自己