CF2124D.Make a Palindrome
普及+/提高
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
你被给定了一个长度为 $ n $ 的序列 $ a $ 以及一个数 $ k $,你可以进行如下操作任意次:
- 选择两个整数 $ l $ 和 $ r $ $ (1 \le l \le r \le |a|) $ 满足 $ r-l+1 \geq k $ 。
- 然后,选择一个整数 $ i $ $ (l\leq i \leq r) $ 使得 $ a_i $ 是 $ [a_l,a_{l+1},\ldots,a_r] $ 中第 $ k $ 小的数。如果有多个满足条件 $ i $,你可以任选其一。例如,当 $ a = [1, 2, 2, 1, 3], l = 1, r = 5 $ 且 $ k = 3 $ 时,$ i $ 可能是 $ 2 $ 或 $ 3 $ 。
- 最后,从 $ a $ 中删除 $ a_i $,连接序列的剩余部分。
求出原序列是否能在若干次操作后变为回文串 $ ^{\text{∗}} $ 。注意,空串也被视为回文串。
$ ^{\text{∗}} $ 若序列 $ b=[b_1,b_2,\ldots,b_m] $ 是一个回文串,那么对于 $ 1 \leq i \leq m , b_i=b_{m+1-i} $ 。
输入格式
每组输入包含多组数据,其中第一行一个整数 $ t $ ( $ 1 \le t \le 10^4 $ ) 表示测试数据组数。每组测试数据格式如下:
第一行包含两个整数 $ n $ 和 $ k $ ( $ 1 \leq k \leq n \leq 2\cdot 10^5 $ ) 。
第二行包含 $ n $ 个整数 $ a_1,a_2,\ldots,a_n $ ( $ 1 \leq a_i \leq n $ ) 表示序列 $ a $ 。
保证每组输入中所有 $ n $ 的和不超过 $ 2\cdot 10^5 $ 。
输出格式
对于每组数据,如果可以通过若干次操作变为回文串,输出 YES,否则输出 NO。你可以输出答案的任意一种大小写变形。例如,yEs,yes,Yes 和 YES 也被视为肯定的答复。
输入输出样例
输入#1
8 5 3 5 4 3 4 5 4 1 1 1 2 1 6 6 2 3 4 5 3 2 5 4 5 2 4 3 1 8 5 4 7 1 2 3 1 3 4 5 4 1 2 1 2 2 3 3 1 2 2 4 4 2 1 2 2
输出#1
YES YES YES NO NO YES NO YES
说明/提示
在第一组样例中,$ a $ 已经是回文串了。
在第一组样例中,我们可以进行如下两次操作:$ [\mathbf{1,1},2,1]\rightarrow [1,\mathbf{2},1]\rightarrow[1,1] $
在第三组样例中,我们可以只进行一次操作:$ [\mathbf{2,3,4,5,3,2}]\rightarrow[2,3,4,3,2] $
在第四组样例中,无论如何进行操作,都无法形成回文串。
输入解题思路,AI测评打分。不知道怎么写?