zoukankan      html  css  js  c++  java
  • poj2823-Sliding Window

    两个单调队列就过了,不能用STL,会超时,手动模拟。

     1 #include <cstdio>
     2 #include <iostream>
     3 #include <cstring>
     4 #include <cmath>
     5 #include <algorithm>
     6 using namespace std;
     7 const int maxn=1e6+5;
     8 int q1[maxn],q2[maxn],l1,l2,r1,r2;
     9 int n,k,as1[maxn],as2[maxn],a[maxn];
    10 void in1(int v,int id){
    11     while(l1<=r1&&a[q1[r1]]>v)    r1--;
    12     q1[++r1]=id;
    13     while(l1<=r1&&q1[r1]-q1[l1]+1>k)l1++;
    14 }
    15 void in2(int v,int id){
    16     while(l2<=r2&&a[q2[r2]]<v)    r2--;
    17     q2[++r2]=id;
    18     while(l2<=r2&&q2[r2]-q2[l2]+1>k)l2++;
    19 }
    20 
    21 int main(){
    22     ios::sync_with_stdio(false);
    23     cin>>n>>k;
    24     for(int i=1;i<=n;++i)
    25         cin>>a[i];
    26     for(int i=1;i<=k;++i){
    27         in1(a[i],i);in2(a[i],i);
    28     }
    29     as1[0]=a[q1[l1]];as2[0]=a[q2[l2]];
    30     for(int i=k+1;i<=n;++i){
    31         in1(a[i],i),in2(a[i],i);
    32         as1[i-k]=a[q1[l1]];as2[i-k]=a[q2[l2]];
    33     }
    34     for(int i=0;i<=n-k;++i){
    35         printf("%d ",as1[i]);
    36     }
    37     puts("");
    38     for(int i=0;i<=n-k;++i){
    39         printf("%d ",as2[i]);
    40     } 
    41     return 0;
    42 }
    43  
  • 相关阅读:
    《JS权威指南学习总结--6.6属性getter和setter》
    《JS权威指南学习总结--6.5枚举属性》
    django的模板系统
    django额外参数的传递和url命名
    python在图片上画矩形
    当爬虫遇到js加密
    php基础-7
    php基础-6
    php基础-5
    php基础-4
  • 原文地址:https://www.cnblogs.com/AT-HENS/p/7755900.html
Copyright © 2011-2022 走看看