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测评打分。不知道怎么写?

首页