zoukankan      html  css  js  c++  java
  • 1290A

    Link

    Solution:

    O(n2):

     1 #include <bits/stdc++.h>
     2 # define LL long long
     3 using namespace std;
     4 const int INF=0x7fffffff;
     5 int n, m, k;
     6 int arr[3510];
     7 int b[3510];
     8 int main(){
     9     int T;
    10     scanf("%d", &T);
    11     while(T--){
    12         scanf("%d %d %d", &n, &m, &k);
    13         for(int i=1;i<=n;++i){
    14             scanf("%d", arr+i);
    15         }
    16 
    17         k=min(k,m-1);
    18         for(int i=0;i<=m-1;++i){
    19             b[i]=max(arr[i+1],arr[i+1+n-m]);
    20         }
    21 
    22         int ans=0;
    23         for(int x=0;x<=k;++x){
    24             int localmin=INF;
    25             for(int xaddy=x;xaddy<=x+m-1-k;++xaddy){
    26                 localmin=min(localmin,b[xaddy]);
    27             }
    28             ans=max(ans,localmin);
    29         }
    30         printf("%d
    ", ans);
    31     }
    32     return 0;
    33 }

    Segment Tree:

     1 #include <bits/stdc++.h>
     2 # define LL long long
     3 using namespace std;
     4 const int INF=0x7fffffff;
     5 int n, m, k;
     6 int arr[3510];
     7 int b[3510];
     8 int seg[3510<<2];
     9 
    10 void build(int idx, int left, int right){
    11     if(left==right){
    12         seg[idx]=b[left];
    13         return;
    14     }
    15     int mid=(left+right)>>1;
    16     build(idx*2+1,left,mid);
    17     build(idx*2+2,mid+1,right);
    18     seg[idx]=min(seg[idx*2+1],seg[idx*2+2]);
    19 }
    20 
    21 int query(int idx, int qleft, int qright, int left, int right){
    22     if(qleft>right || qright<left) return INF;
    23     if(qleft<=left && qright>=right){
    24         return seg[idx];
    25     }
    26 
    27     int mid=(left+right)>>1;
    28     int res=INF;
    29     int t1=query(idx*2+1,qleft,qright,left,mid);
    30     int t2=query(idx*2+2,qleft,qright,mid+1,right);
    31     res=min(res,min(t1,t2));
    32     return res;
    33 }
    34 
    35 int main(){
    36     int T;
    37     scanf("%d", &T);
    38     while(T--){
    39         memset(seg,127,sizeof(seg));
    40         scanf("%d %d %d", &n, &m, &k);
    41         for(int i=1;i<=n;++i){
    42             scanf("%d", arr+i);
    43         }
    44 
    45         k=min(k,m-1);
    46         for(int i=0;i<=m-1;++i){
    47             b[i]=max(arr[i+1],arr[i+1+n-m]);
    48         }
    49         build(0,0,m-1);
    50         int ans=0;
    51         int xaddy=0;
    52         for(int x=0;x<=k;++x){
    53             int localmin=query(0,x,x+m-1-k, 0,m-1);
    54             ans=max(ans,localmin);
    55         }
    56         printf("%d
    ", ans);
    57     }
    58     return 0;
    59 }

    Deque:

     1 #include <bits/stdc++.h>
     2 # define LL long long
     3 using namespace std;
     4 const int INF=0x7fffffff;
     5 int n, m, k;
     6 int arr[3510];
     7 int b[3510];
     8 int main(){
     9     int T;
    10     scanf("%d", &T);
    11     while(T--){
    12         scanf("%d %d %d", &n, &m, &k);
    13         for(int i=1;i<=n;++i){
    14             scanf("%d", arr+i);
    15         }
    16 
    17         k=min(k,m-1);
    18         for(int i=0;i<=m-1;++i){
    19             b[i]=max(arr[i+1],arr[i+1+n-m]);
    20         }
    21         deque<int> q;
    22         int ans=0;
    23         int xaddy=0;
    24         for(int x=0;x<=k;++x){
    25             while(q.size()>0 && q.front()<x) q.pop_front();
    26 
    27             while(xaddy<=x+m-1-k){
    28                 while(q.size()>0 && b[xaddy]<=b[q.back()]){
    29                     q.pop_back();
    30                 }
    31                 q.push_back(xaddy);
    32                 ++xaddy;
    33             }
    34             ans=max(ans,b[q.front()]);
    35         }
    36         printf("%d
    ", ans);
    37     }
    38     return 0;
    39 }
  • 相关阅读:
    linux下安装mysql
    简单理解:使用linux的ip地址访问Java项目
    上传项目到github完整步骤及如何删除项目
    解决service iptables save出错please try to use systemctl.
    PCI1255信号采集板卡的干扰来源和解决办法
    L298N驱动的再利用
    千里狼-高速采集相机试用记录
    调试研华PCI1245E记录
    超大型的迷宫
    labview实现模拟python微信模块
  • 原文地址:https://www.cnblogs.com/FEIIEF/p/12254971.html
Copyright © 2011-2022 走看看