zoukankan      html  css  js  c++  java
  • Codeforces #637 div2 B. Nastya and Door

    题意:给你一个数组a,定义:若a[i]>a[i]&&a[i]>a[i-1],则a[i]为峰值,求长度为k的区间内峰值最多能为多少,并输出这个区间的左端点(区间需要将峰的左边和右边都包括)

    题解:记录每个峰值,然后搞一个后缀和,从前往后枚举长度为k的区间,每次维护一下最多的峰值和区间位置即可.

             tips:注意边界,区间左端点l要初始化成1(我初始化的是0,wa了一整场~(>_<)~)

    代码:

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <cmath>
     5 #include <algorithm>
     6 #include <stack>
     7 #include <queue>
     8 #include <vector>
     9 #include <map>
    10 #include <set>
    11 #include <unordered_set>
    12 #include <unordered_map>
    13 #define ll long long
    14 #define fi first
    15 #define se second
    16 #define pb push_back
    17 #define me memset
    18 const int N = 1e6 + 10;
    19 const int mod = 1e9 + 7;
    20 using namespace std;
    21 typedef pair<int,int> PII;
    22 typedef pair<long,long> PLL;
    23  
    24 int t;
    25 int n,k,a[N];
    26 map<int,int> top,pre;
    27 int main() {
    28     ios::sync_with_stdio(false);
    29     cin>>t;
    30      while(t--){
    31          cin>>n>>k;
    32          top.clear();
    33          pre.clear();
    34           for(int i=1;i<=n;++i) cin>>a[i];
    35           for(int i=2;i<n;++i){
    36               if(a[i]>a[i-1] && a[i]>a[i+1]){
    37                   top[i]=1;
    38                   pre[i]=1;
    39               }
    40           }
    41           for(int i=n+k;i>=1;--i) pre[i]=pre[i+1]+pre[i];
    42           int res=0,pos=1;
    43           for(int i=1;i<=n;++i){
    44               int tmp=pre[i]-pre[i-1+k]-top[i];
    45               if(tmp>res){
    46                   res=tmp;
    47                   pos=i;
    48               }
    49           }
    50           printf("%d %d\n",res+1,pos);
    51      }
    52     return 0;
    53 }
    View Code
  • 相关阅读:
    cobbler自动安装系统(Centos7.X)
    企业级全网服务监控
    javascript中的getElementById、getElementsByName、getElementByTagName详解
    JavaScript中Math对象
    网络编程这结构体发送
    vue中'. native'修饰符的使用
    vue中render: h => h(App)的详细解释
    关于内存对齐的几点记忆
    _initialize() 与__construct()的区别
    PHP的 __DIR__ 作用
  • 原文地址:https://www.cnblogs.com/lr599909928/p/12771050.html
Copyright © 2011-2022 走看看