CF2244C Stepan and Permutation

题目描述

Stepan 找到了一组长度为 $n$ 的排列 $p$。当然,他决定将其排序。为了让过程更有趣,他选择了两个正整数 $x$ 和 $y$($x + y \le n$),并定义了一条交换元素的规则。 在一次操作中,Stepan 可以选择两个下标 $i$ 和 $j$($1 \le i, j \le n$),当以下条件至少有一个成立时,可以交换 $p_i$ 和 $p_j$: - $|i - j| = x$ - $|i - j| = y$ Stepan 想知道,是否有可能仅通过任意多次上述操作将排列升序排序。请你回答他的问题。

输入格式

第一行包含一个整数 $t$($1 \le t \le 10^4$),表示测试用例数。 每个测试用例的第一行包含三个整数 $n$、$x$、$y$($1 \le x, y \le n \le 2 \times 10^5$,$x + y \le n$),表示数组的长度以及 Stepan 选择的两个数。 每个测试用例的第二行包含 $n$ 个整数 $p_i$($1 \le p_i \le n$),表示数组 $p$,保证 $p$ 是一个排列。 保证所有测试用例中 $n$ 的总和不超过 $2 \times 10^5$。

输出格式

对于每个测试用例,若可以通过任意多次操作将排列排序,输出 "YES";否则输出 "NO"。 大小写不敏感,例如 "yEs"、"yes"、"Yes" 和 "YES" 都是可以接受的。

说明/提示

由 ChatGPT 5 翻译