zoukankan      html  css  js  c++  java
  • 洛谷 1886 滑动窗口

    【题解】

      线段树或者单调队列都可以。

     1 #include<cstdio>
     2 #include<algorithm>
     3 #include<cstring>
     4 #define LL long long
     5 #define rg register
     6 #define N 1000010
     7 #define ls (u<<1)
     8 #define rs (u<<1|1)
     9 #define mid ((a[u].l+a[u].r)>>1) 
    10 using namespace std;
    11 int n,m;
    12 struct tree{
    13     int l,r,mx,mn;
    14 }a[N<<2];
    15 inline int read(){
    16     int k=0,f=1; char c=getchar();
    17     while(c<'0'||c>'9')c=='-'&&(f=-1),c=getchar();
    18     while('0'<=c&&c<='9')k=k*10+c-'0',c=getchar();
    19     return k*f;
    20 }
    21 void build(int u,int l,int r){
    22     a[u].l=l; a[u].r=r;
    23     if(l<r){
    24         build(ls,l,mid),build(rs,mid+1,r);
    25         a[u].mx=max(a[ls].mx,a[rs].mx);
    26         a[u].mn=min(a[ls].mn,a[rs].mn);
    27     }
    28     else a[u].mx=a[u].mn=read(); 
    29 }
    30 int query(int u,int l,int r,int type){
    31     if(l<=a[u].l&&a[u].r<=r) return type?a[u].mx:a[u].mn;
    32     if(type){
    33         int ret=-1e9;
    34         if(l<=mid) ret=max(ret,query(ls,l,r,type));
    35         if(r>mid) ret=max(ret,query(rs,l,r,type));
    36         return ret;
    37     }
    38     else{
    39         int ret=1e9;
    40         if(l<=mid) ret=min(ret,query(ls,l,r,type));
    41         if(r>mid) ret=min(ret,query(rs,l,r,type));
    42         return ret;
    43     }
    44 }
    45 int main(){
    46     n=read(); m=read(); build(1,1,n);
    47     for(rg int i=1;i<=n-m+1;i++) printf("%d ",query(1,i,i+m-1,0));//min
    48     puts("");
    49     for(rg int i=1;i<=n-m+1;i++) printf("%d ",query(1,i,i+m-1,1));//max
    50     return 0;
    51 }
    View Code
  • 相关阅读:
    无向图最小割Stoer-Wagner算法学习
    centos7下opencv的安装
    problems when installed mysql in linux ubuntu
    gcc内嵌汇编
    python第三方库镜像地址
    docker命令
    搭建小型web服务
    装饰器
    docker-influxdb
    shell基础命令
  • 原文地址:https://www.cnblogs.com/DriverLao/p/9397590.html
Copyright © 2011-2022 走看看