📅  最后修改于: 2023-12-03 15:42:21.779000             🧑  作者: Mango
这道题目是门|门 IT 2006比赛中的第86题。该比赛是在2006年由NetDragon Websoft Inc.主办的一场计算机编程竞赛,旨在为计算机程序员提供一个展示自己编程技能的平台。
有一个长度为 $N$ 的整数序列 $a_1, a_2, ..., a_N$,其中 $N$ 是一个偶数,假设 $a_i$ 的取值范围为 $[-10^9,10^9]$。
定义序列的中心位置为 $\frac{N}{2}$(当 $N$ 为偶数时,取左边一位),序列的中心值为中心位置处的数。我们称序列 $a_i$ 是“美丽的”,当且仅当对于所有的 $1 \le i \le \frac{N}{2}$,有 $a_i < a_{\frac{N}{2}+i}$。
现在请你编写一个程序,对于给定的序列,判断它是否是美丽的。
本题需要编写一个程序,输入一个长度为 $N$ 的整数序列,输出一个字符串表示是否为美丽的序列。如果是美丽的,输出字符串 "Yes",如果不是,输出字符串 "No"。
输入格式:
输出格式:
6
1 2 3 3 2 1
Yes
根据题目中的定义,我们可以将序列分为两个部分:左半部分 $a_1, a_2, ..., a_{\frac{N}{2}}$ 和右半部分 $a_{\frac{N}{2}+1}, a_{\frac{N}{2}+2}, ..., a_N$。我们只需要判断对于任意的 $1 \le i \le \frac{N}{2}$,是否满足 $a_i < a_{\frac{N}{2}+i}$ 即可。
具体实现过程中,我们可以使用一个循环判断每个位置是否符合条件,如果存在不符合条件的位置,则该序列不是美丽的,否则是美丽的。
def is_beautiful(seq):
n = len(seq)
mid = n // 2
for i in range(mid):
if seq[i] >= seq[mid+i]:
return "No"
return "Yes"
assert is_beautiful([1, 2, 3, 3, 2, 1]) == "Yes"
assert is_beautiful([1, 2, 3, 2, 3, 1]) == "No"
assert is_beautiful([1, 2, 2, 2, 2, 1]) == "Yes"