📜  门|门 IT 2006 |第 86 题(1)

📅  最后修改于: 2023-12-03 15:42:21.779000             🧑  作者: Mango

门|门 IT 2006 |第 86 题

这道题目是门|门 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"。

输入格式:

  • 第一行包含一个整数 $N$,表示数组的长度。其中 $2 \le N \le 10^5$,$N$ 是偶数。
  • 第二行包含 $N$ 个整数 $a_1, a_2, ..., a_N$,表示序列。其中 $-10^9 \le a_i \le 10^9$。

输出格式:

  • 一个字符串,表示序列是否为美丽的。如果是美丽的,输出字符串 "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"