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 翻译