码迷,mamicode.com
首页 > 移动开发 > 详细

codeforce -602B Approximating a Constant Range(暴力)

时间:2015-11-25 22:23:02      阅读:312      评论:0      收藏:0      [点我收藏+]

标签:

CF上说是数据结构类型。表示不会。

技术分享

题意是,找连续的并且任意两个数相差不超过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\n",sum);
53     }
54     return 0;
55 }

 

codeforce -602B Approximating a Constant Range(暴力)

标签:

原文地址:http://www.cnblogs.com/zzuli2sjy/p/4995865.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!