CF1256F.Equalizing Two Strings

普及+/提高

通过率:0%

时间限制:1.00s

内存限制:256MB

AC君温馨提醒

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

题目描述

You are given two strings ss and tt both of length nn and both consisting of lowercase Latin letters.

In one move, you can choose any length lenlen from 11 to nn and perform the following operation:

  • Choose any contiguous substring of the string ss of length lenlen and reverse it;
  • at the same time choose any contiguous substring of the string tt of length lenlen and reverse it as well.

Note that during one move you reverse exactly one substring of the string ss and exactly one substring of the string tt.

Also note that borders of substrings you reverse in ss and in tt can be different, the only restriction is that you reverse the substrings of equal length. For example, if len=3len=3 and n=5n=5, you can reverse s[1…3]s[1 \dots 3] and t[3…5]t[3 \dots 5], s[2…4]s[2 \dots 4] and t[2…4]t[2 \dots 4], but not s[1…3]s[1 \dots 3] and t[1…2]t[1 \dots 2].

Your task is to say if it is possible to make strings ss and tt equal after some (possibly, empty) sequence of moves.

You have to answer qq independent test cases.

给你两个长度均为 nn 的字符串 ss 和 tt,它们均由小写拉丁字母组成。

在一次操作中,你可以任选一个长度 lenlen(取值范围为 11 到 nn),并执行以下操作:

  • 在字符串 ss 中任选一个长度为 lenlen 的连续子串,并将其反转;
  • 同时,在字符串 tt 中也任选一个长度为 lenlen 的连续子串,并将其反转。

注意:每次操作中,你恰好反转字符串 ss 中的一个子串,以及字符串 tt 中的一个子串。

还需注意:你在 ss 和 tt 中所选子串的起止位置可以不同,唯一限制是这两个子串的长度必须相等。例如,若 len=3len=3 且 n=5n=5,则你可以反转 s[1…3]s[1 \dots 3] 和 t[3…5]t[3 \dots 5],或 s[2…4]s[2 \dots 4] 和 t[2…4]t[2 \dots 4],但不能反转 s[1…3]s[1 \dots 3] 和 t[1…2]t[1 \dots 2]。

你的任务是判断:是否存在某个(可能为空)操作序列,使得经过这些操作后,字符串 ss 和 tt 变为相等。

你需要回答 qq 个相互独立的测试用例。

输入格式

The first line of the input contains one integer qq (1≤q≤1041 \le q \le 10^4) — the number of test cases. Then qq test cases follow.

The first line of the test case contains one integer nn (1≤n≤2⋅1051 \le n \le 2 \cdot 10^5) — the length of ss and tt.

The second line of the test case contains one string ss consisting of nn lowercase Latin letters.

The third line of the test case contains one string tt consisting of nn lowercase Latin letters.

It is guaranteed that the sum of nn over all test cases does not exceed 2⋅1052 \cdot 10^5 (∑n≤2⋅105\sum n \le 2 \cdot 10^5).

输入的第一行包含一个整数 qq(1≤q≤1041 \le q \le 10^4),表示测试用例的数量。随后是 qq 个测试用例。

每个测试用例的第一行包含一个整数 nn(1≤n≤2⋅1051 \le n \le 2 \cdot 10^5),表示字符串 ss 和 tt 的长度。

每个测试用例的第二行包含一个由 nn 个小写拉丁字母组成的字符串 ss。

每个测试用例的第三行包含一个由 nn 个小写拉丁字母组成的字符串 tt。

保证所有测试用例的 nn 之和不超过 2⋅1052 \cdot 10^5(即 ∑n≤2⋅105\sum n \le 2 \cdot 10^5)。

输出格式

For each test case, print the answer on it — "YES" (without quotes) if it is possible to make strings ss and tt equal after some (possibly, empty) sequence of moves and "NO" otherwise.

对于每个测试用例,在一行中输出答案:如果可以通过若干次(可能为零次)操作使得字符串 ss 和 tt 相等,则输出 "YES"(不带引号),否则输出 "NO"。

输入输出样例

  • 输入#1

    4
    4
    abcd
    abdc
    5
    ababa
    baaba
    4
    asdf
    asdg
    4
    abcd
    badc

    输出#1

    NO
    YES
    NO
    YES

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

首页