zoukankan      html  css  js  c++  java
  • 洛谷 P2032 扫描 题解

    题面

    用一个单调递减队列来维护一个区间,单调队列的头就是该区间的最大值;

    因为在该数前面进队的数如果比后进的数要小就说明了前面进队的数绝对不会影响答案。

    #include <bits/stdc++.h>
    using namespace std;
    int q[2000010];
    int a[2000010];
    int b[2000010];
    int ans[2000010];
    int main ()
    {
        int n,k;
        cin>>n>>k;
        for(int i=1;i<=n;i++){
            scanf("%d",&a[i]);
        }
        int h=1,t=0;
        for(int i=1;i<=n;i++){
            while(b[h]+k-1<i&&h<=t) ++h;
            while(a[i]>q[t]&&h<=t) --t;
            b[++t]=i;
            q[t]=a[i];
            ans[i]=q[h];
        }
        for(int i=k;i<=n;i++){
            cout<<ans[i]<<endl;
        }
    }
  • 相关阅读:
    LoadRunner
    LoadRunner
    LoadRunner
    LoadRunner
    Python
    hadoop for .Net
    MVC初学
    MVC初学
    android学习---面试一
    android学习---progressbar和ratingbar
  • 原文地址:https://www.cnblogs.com/kamimxr/p/11345483.html
Copyright © 2011-2022 走看看