NC53674. 「水」滔天巨浪
描述
帕秋莉掌握了一种水属性魔法
在此之前,她已经忍了雾之湖上的妖精们很久了
现在,她决定反击!
雾之湖上有n只妖精排成一列,每只妖精的飞行高度严格单调递增,且高度1≤x≤1000
帕秋莉能清除掉列里面一个连续子区间的妖精,当且仅当它们被清理之后,帕秋莉仍然能还原出这个子区间的所有妖精的飞行高度
如,若妖精们飞行高度为1,3,4,5,6,8,那么可以清理飞行高度为4,5的两只妖精,因为清理之后,这两个空位之间的数据是唯一确定的
帕秋莉一次最多选择清除一个连续子区间,请问帕秋莉一次最多能清除多少妖精呢?
输入描述
第一行一个整数n,表示有n只妖精下一行n个数ai,表示每只妖精飞行高度
输出描述
输出一行,一个整数表示答案
示例1
输入:
3 998 999 1000
输出:
2
C++ 解法, 执行用时: 5ms, 内存消耗: 464K, 提交时间: 2021-10-07 19:15:33
#include<iostream> using namespace std; int n,m=0; int main() { cin>>n; int a[n],i,k,j=1; for( i=0; i<n; i++)cin>>a[i]; for( i=1; i<n; i++) { if(a[i]==a[i-1]+1) { j++; if(j>m)m=j,k=i; } else j=1; } cout<<m-2; }
Python3(3.5.2) 解法, 执行用时: 56ms, 内存消耗: 3436K, 提交时间: 2019-12-19 13:56:41
n=int(input()) a=list(map(int,input().split(' '))) b=[] for i in range(n-1): count=1 while a[i]+1==a[i+1]: count+=1 if i==n-2: break i+=1 b.append(count-2) print(max(b))
Python(2.7.3) 解法, 执行用时: 20ms, 内存消耗: 2864K, 提交时间: 2019-12-09 14:56:20
n = int(raw_input()) a = [0] + map(int, raw_input().split()) + [1001] i = 1; k = 1; m = 0; while i <= n + 1: if (a[i] != a[i - 1] + 1) : k = 1 else : k = k + 1 m = max(k, m) i = i + 1 print m - 2