zoukankan      html  css  js  c++  java
  • codeforce -602B Approximating a Constant Range(暴力)

    B. Approximating a Constant Range
    time limit per test
    2 seconds
    memory limit per test
    256 megabytes
     

    When Xellos was doing a practice course in university, he once had to measure the intensity of an effect that slowly approached equilibrium. A good way to determine the equilibrium intensity would be choosing a sufficiently large number of consecutive data points that seems as constant as possible and taking their average. Of course, with the usual sizes of data, it's nothing challenging — but why not make a similar programming contest problem while we're at it?

    You're given a sequence of n data points a1, ..., an. There aren't any big jumps between consecutive data points — for each 1 ≤ i < n, it's guaranteed that |ai + 1 - ai| ≤ 1.

    A range [l, r] of data points is said to be almost constant if the difference between the largest and the smallest value in that range is at most 1. Formally, let M be the maximum and m the minimum value of ai for l ≤ i ≤ r; the range [l, r] is almost constant if M - m ≤ 1.

    Find the length of the longest almost constant range.

    Input

    The first line of the input contains a single integer n (2 ≤ n ≤ 100 000) — the number of data points.

    The second line contains n integers a1, a2, ..., an (1 ≤ ai ≤ 100 000).

    Output

    Print a single number — the maximum length of an almost constant range of the given sequence.

    Sample test(s)
    input
    5
    1 2 3 3 2
    output
    4
    input
    11
    5 4 5 5 6 7 8 8 8 7 6
    output
    5
    Note

    In the first sample, the longest almost constant range is [2, 5]; its length (the number of data points in it) is 4.

    In the second sample, there are three almost constant ranges of length 4: [1, 4], [6, 9] and [7, 10]; the only almost constant range of the maximum length 5 is [6, 10].

    题意是,找连续的并且任意两个数相差不超过1的最长串。

    思路:题中说相邻的两个数相差不超过1;

    那么cnt最小为2,cnt赋初值2;由于要相差不超过一,所以每个串的最大值最小值相差不能超过一,

    那么从第三个元素开始,如果abs(a[i]-max)<=1&&abs(a[i]-min)<=1,就cnt++,表示该元素能加入上一个串,因为有新数字加入,所以更新max,和minn.

    如果不符合的话cnt置为2就以a[i],开始向前找串。

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 #include<algorithm>
     4 #include<iostream>
     5 #include<string.h>
     6 using namespace std;
     7 int a[100005];
     8 int main(void)
     9 {
    10     int n,i,k,p,q,j;
    11     while(scanf("%d",&n)!=EOF)
    12     {
    13         for(i=0; i<n; i++)
    14         {
    15             scanf("%d",&a[i]);
    16         }
    17         int maxx,minn;
    18         maxx=max(a[0],a[1]);
    19         minn=min(a[0],a[1]);
    20         int cnt=2;
    21         int sum=2;
    22         int x=maxx,y=minn;
    23         for(i=2; i<n; i++)
    24         {
    25             if(abs(a[i]-maxx)<=1&&abs(a[i]-minn)<=1)
    26             {
    27                 cnt++;
    28                 maxx=max(maxx,a[i]);
    29                 minn=min(a[i],minn);
    30             }
    31             else
    32             {
    33                 cnt=2;
    34                 maxx=max(a[i],a[i-1]);
    35                 minn=min(a[i],a[i-1]);
    36                 for(j=i-2; j>=0; j--)//从后往前找
    37                 {
    38                     if(abs(a[j]-maxx)<=1&&abs(a[j]-minn)<=1)
    39                     {
    40                         cnt++;
    41                         maxx=max(maxx,a[j]);
    42                         minn=min(minn,a[j]);
    43                     }
    44                     else break;
    45                 }
    46             }
    47             if(cnt>sum)
    48             {
    49                 sum=cnt;
    50             }
    51         }
    52         printf("%d
    ",sum);
    53     }
    54     return 0;
    55 }
    油!油!you@
  • 相关阅读:
    vscode设置不展示 .pyc文件
    Centos7安装python3并与python2共存, 以及安装pip(pip3)
    vmware 安装 centos7 及网络配置,永久修改主机名
    VMware虚拟机ubuntu显示屏幕太小解决办法, 安装 VM tools
    struct timeval和gettimeofday()
    cocos2d-x中CCLabelAtlas的小图片拼接
    Core Animation系列之CADisplayLink
    Xcode5 上64位编译 出错No architectures to compile for
    通过OpenGL ES在iOS平台实践增强现实
    通过OpenGL ES在iOS平台实践增强现实(一)
  • 原文地址:https://www.cnblogs.com/zzuli2sjy/p/4995865.html
Copyright © 2011-2022 走看看