CF1610B Kalindrome Array

题目描述

一个数组 $[b_1, b_2, \ldots, b_m]$ 被称为回文数组,如果对于每个 $i$ 满足 $1 \leq i \leq m$,都有 $b_i = b_{m+1-i}$。空数组也被认为是回文数组。 如果一个数组满足以下条件,则称其为 kalindrome(卡林德数组): - 存在某个整数 $x$,可以删除数组中若干个等于 $x$ 的元素(可以不删,也可以删部分),使得剩下的数组(将剩余部分拼接起来)是回文数组。 注意,你不必删除所有等于 $x$ 的元素,也不必至少删除一个等于 $x$ 的元素。 例如: - $[1, 2, 1]$ 是 kalindrome,因为你可以选择不删除任何元素,原数组就是回文数组。 - $[3, 1, 2, 3, 1]$ 是 kalindrome,因为你可以选择 $x = 3$,删除两个 $3$,得到 $[1, 2, 1]$,它是回文数组。 - $[1, 2, 3]$ 不是 kalindrome。 给定一个数组 $[a_1, a_2, \ldots, a_n]$,判断该数组是否为 kalindrome。

输入格式

第一行包含一个整数 $t$($1 \leq t \leq 10^4$),表示测试用例的数量。接下来是每个测试用例的描述。 每个测试用例的第一行包含一个整数 $n$($1 \leq n \leq 2 \cdot 10^5$),表示数组的长度。 第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($1 \leq a_i \leq n$),表示数组的元素。 保证所有测试用例中 $n$ 的总和不超过 $2 \cdot 10^5$。

输出格式

对于每个测试用例,如果数组 $a$ 是 kalindrome,输出 YES,否则输出 NO。你可以用任意大小写输出答案。

说明/提示

在第一个测试用例中,数组 $[1]$ 已经是回文数组,因此也是 kalindrome。 在第二个测试用例中,可以选择 $x = 2$,删除第二个元素,得到 $[1]$,它是回文数组。 在第三个测试用例中,不可能得到回文数组。 在第四个测试用例中,你可以选择 $x = 4$,删除第五个元素,得到 $[1, 4, 4, 1]$。你也可以选择 $x = 1$,删除第一个和第四个元素,得到 $[4, 4, 4]$。 由 ChatGPT 4.1 翻译