列表

详情


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

上一题