zoukankan      html  css  js  c++  java
  • 单调队列

    luogu P1886 滑动窗口 https://www.luogu.org/problemnew/show/P1886

     1 // luogu-judger-enable-o2
     2 #include<bits/stdc++.h>
     3 using namespace std;
     4 #define il inline
     5 #define rg register
     6 typedef long long ll;
     7 #define max(a,b) (a)<(b)?(b):(a)
     8 #define gmax(a,b) a=max(a,b)
     9 #define min(a,b) (a)<(b)?(a):(b)
    10 #define gmin(a,b) a=min(a,b)
    11 #define FOR(i,a,b) for(rg int i=a;i<=b;++i)
    12 #define For(i,a,b) for(rg int i=a;i>=b;--i)
    13 #define gc pa==pb&&(pb=(pa=buf)+fread(buf,1,100000,stdin),pa==pb)?EOF:*pa++
    14 static char buf[100000],*pa(buf),*pb(buf);
    15 il int rd(){
    16     rg int x(0),w(1);
    17     rg char c(gc);
    18     while(c<'0'||c>'9')
    19     {
    20         if(c=='-') w=-1;
    21         c=gc;
    22     }
    23     while(c>='0'&&c<='9') x=x*10+c-48,c=gc;
    24     return x*w;}
    25 const int N=1e6+5;
    26 int q[N],hd,tl;
    27 int n,k,a[N],ans;
    28 
    29 int main()
    30 {
    31     n=rd(),k=rd();
    32     FOR(i,1,n) a[i]=rd();
    33     hd=tl=1;ans=1e9;
    34     FOR(i,1,k-1) 
    35     {
    36         while(hd<=tl && a[q[tl]]>=a[i]) --tl;
    37         q[++tl]=i;
    38     }
    39     FOR(i,k,n)
    40     {
    41         while(hd<=tl && q[hd]<=i-k) ++hd;
    42         while(hd<=tl && a[q[tl]]>=a[i]) --tl;
    43         q[++tl]=i;
    44         printf("%d ",a[q[hd]]);
    45     }
    46     printf("
    ");
    47     hd=tl=1;ans=-(1e9);
    48     FOR(i,1,k-1)
    49     {
    50         while(hd<=tl && a[q[tl]]<=a[i]) --tl;
    51         q[++tl]=i;
    52     }
    53     FOR(i,k,n)
    54     {
    55         while(hd<=tl && q[hd]<=i-k) ++hd;
    56         while(hd<=tl && a[q[tl]]<=a[i]) --tl;
    57         q[++tl]=i;
    58         printf("%d ",a[q[hd]]);
    59     }
    60     return 0;
    61 }
  • 相关阅读:
    打造vim IDE
    Shell常用快捷键
    centos修改SSH端口并禁用root远程登录
    Java集合图谱
    github密钥
    创建Node.js TypeScript后端项目
    Shell的类型
    Mac新系统常用设置
    mac svn无法保存密码,JetBrains IDE(WebStrom、IntelliJ IDEA) 反复提示输入密码
    vim快捷键
  • 原文地址:https://www.cnblogs.com/universeplayer/p/10742529.html
Copyright © 2011-2022 走看看