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
  • 相关阅读:
    【SpringCloud构建微服务系列】分布式链路跟踪Spring Cloud Sleuth
    【算法】LRU算法
    细说分布式锁
    【Python】Python3.4+Matplotlib详细安装教程
    LoRaWAN协议(二)--LoRaWAN MAC数据包格式
    LoRaWAN移植笔记(一)__RTC闹钟链表的实现
    cJSON_json包的C语言解析库
    LoRaWAN协议(一)--架构解析
    STM32L051 PVD的调试
    以帧为存储单位的循环stack
  • 原文地址:https://www.cnblogs.com/lr599909928/p/12771050.html
Copyright © 2011-2022 走看看