试题编号: 202109-1
试题名称: 数组推导
时间限制: 1.0s
内存限制: 512.0MB
样例1输入
6
0 0 5 5 10 10
样例1输出
30
15
样例2输入
7
10 20 30 40 50 60 75
样例2输出
285
285
#方法一
n=int(input())
l=[]
num=list(map(int,input().split()))
num.insert(0,0)
for i in range(n):
if num[i]!=num[i+1]:
l.append(num[i+1])
print(sum(num))
print(sum(l))
#方法二
n=int(input())
l=[]
num=list(map(int,input().split()))
for i in num:
if i not in l:
l.append(i)
print(sum(num))
print(sum(l))
试题编号: 202109-2
试题名称: 非零段划分
时间限制: 1.0s
内存限制: 512.0MB
样例1输入
11
3 1 2 0 0 2 0 4 5 0 2
样例1输出
5
#以下展示了使用 enumerate() 方法的实例:
>>> seasons = ['Spring', 'Summer', 'Fall', 'Winter']
>>> list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
>>> list(enumerate(seasons, start=1)) # 下标从 1 开始
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
#for 循环使用 enumerate
>>> seq = ['one', 'two', 'three']
>>> for i, element in enumerate(seq):
... print i, element
...
0 one
1 two
2 three
n = int(input())
# 数组前后补零
A = [0]+list(map(int, input().split()))+[0]
idx_dic = {}
maxnum = 0
for id, num in enumerate(A):
# num是0不用记录
if not num:
continue
maxnum = max(maxnum, num)
if idx_dic.get(num) is None:
idx_dic[num] = [id]
else:
idx_dic[num].append(id)
cnt, ans = 0, 0
island = [0]*(n+2)
for level in range(maxnum, 0, -1):
if idx_dic.get(level) is None:
continue
for idx in idx_dic[level]:
# 如果前后是陆地
if island[idx-1] and island[idx+1]:
cnt -= 1
# 如果前后是水
elif not island[idx-1] and not island[idx+1]:
cnt += 1
island[idx] = 1
ans = max(ans, cnt)
print(ans)
饭吃多了跑不动。