CF2085A.Serval and String Theory

入门

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

仅由小写拉丁字母组成的字符串 rr 被称为通用字符串,当且仅当 rr 在字典序上小于∗^{\text{∗}}其反转†^{\text{†}}后的字符串。

给定一个由 nn 个小写拉丁字母组成的字符串 ss。你需要通过最多 kk 次操作使 ss 成为通用字符串。每次操作可执行以下步骤:

  • 选择两个下标 ii 和 jj(1≤i,j≤n1 \le i, j \le n),交换 sis_i 和 sjs_j。注意若 i=ji = j,则不进行任何操作。

请判断是否能在最多 kk 次操作内使 ss 成为通用字符串。

∗^{\text{∗}}当两个长度相同的字符串 aa 和 bb 满足以下条件时,称 aa 的字典序小于 bb:

  • 在第一个不同的位置上,aa 的字符在字母表中出现的时间早于 bb 对应位置的字符。

†^{\text{†}}字符串 rr 的反转是指将 rr 从右向左书写得到的新字符串。例如,字符串 abcad\texttt{abcad} 的反转为 dacba\texttt{dacba}。

输入格式

每个测试包含多个测试用例。第一行输入测试用例数 tt(1≤t≤5001 \le t \le 500)。接下来描述每个测试用例。

每个测试用例的第一行包含两个整数 nn 和 kk(1≤n≤1001 \le n \le 100,0≤k≤1040 \le k \le 10^4)——字符串 ss 的长度及允许的最大操作次数。

第二行输入一个由 nn 个小写拉丁字母组成的字符串 ss。

输出格式

对于每个测试用例,若能在最多 kk 次操作内使 ss 成为通用字符串,输出 "YES",否则输出 "NO"。

答案可以任意大小写形式输出(例如 "yEs"、"yes"、"Yes" 和 "YES" 均视为肯定回答)。

输入输出样例

  • 输入#1

    8
    1 10000
    a
    3 3
    rev
    6 0
    string
    6 0
    theory
    9 2
    universal
    19 0
    codeforcesecrofedoc
    19 1
    codeforcesecrofedoc
    3 1
    zzz

    输出#1

    NO
    YES
    NO
    YES
    YES
    NO
    YES
    NO

说明/提示

第一个测试案例中,任何操作后 ss 均保持不变。但 a\texttt{a} 的反转仍为 a\texttt{a},因此无法使其成为通用字符串。

第二个测试案例中,字符串 rev\texttt{rev} 的字典序小于其反转 ver\texttt{ver},因此 ss 已经是通用字符串。

第五个测试案例中,可按以下步骤操作:

  1. 交换 s4s_4 和 s7s_7,此时 ss 变为 uniserval\texttt{uniserval};
  2. 交换 s1s_1 和 s3s_3,此时 ss 变为 inuserval\texttt{inuserval}。

字符串 inuserval\texttt{inuserval} 是通用字符串。

翻译由 DeepSeek R1 完成

输入解题思路,AI测评打分。不知道怎么写?

首页