CF2231B Another Sorting Problem

题目描述

给定一个数组 $a_1, a_2, \ldots, a_n$,你最多可以对该数组执行以下操作一次: - 选择一个正整数 $k$,以及一个数组 $a$ 的子序列 $b_1, b_2, \ldots, b_m$ $^{\text{∗}}$,将 $k$ 加到该子序列的每一个元素上,即对于每个 $i$ 执行 $a_{b_i} := a_{b_i} + k$。 你需要判断能否通过最多一次这样的操作,使得数组变为非递减(即升序)排列。 $^{\text{∗}}$ 如果序列 $b$ 可以通过从 $a$ 的任意位置删除若干(可能为零或全部)元素得到,那么 $b$ 是 $a$ 的一个子序列。

输入格式

每组测试包含多组测试数据。第一行包含一个整数 $t$($1 \leq t \leq 10^4$),表示测试组数。 每组测试的第一行包含一个整数 $n$($1 \leq n \leq 2 \cdot 10^5$),表示数组 $a$ 的长度。 每组测试的第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($1 \leq a_i \leq 10^9$)。 保证所有测试组中 $n$ 的总和不超过 $2 \cdot 10^5$。

输出格式

对于每组测试数据,如果能够通过最多一次上述操作使得数组变为非递减排列,输出 "Yes"。否则输出 "No"。答案不区分大小写,例如 “YeS”、“YES”、“NO”、“nO” 都是可以接受的。

说明/提示

第一组测试数据中,数组已经是非递减的,无需进行任何操作。 第二组测试数据中,可以证明无法通过这样的操作将数组变为非递减。 第三组测试数据中,可以选择 $k = 6$ 和子序列 $[2, 4, 6]$ 作为 $b$。操作后,数组 $a$ 变为 $[8, \textbf{9}, 9, \textbf{10}, 10, \textbf{11}, 11]$(被选中的子序列元素用粗体表示)。 由 ChatGPT 5 翻译