310666: CF1867D. Cyclic Operations

Memory Limit:256 MB Time Limit:1 S
Judge Style:Text Compare Creator:
Submit:0 Solved:0

Description

D. Cyclic Operationstime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard output

Egor has an array $a$ of length $n$, initially consisting of zeros. However, he wanted to turn it into another array $b$ of length $n$.

Since Egor doesn't take easy paths, only the following operation can be used (possibly zero or several times):

  • choose an array $l$ of length $k$ ($1 \leq l_i \leq n$, all $l_i$ are distinct) and change each element $a_{l_i}$ to $l_{(i\%k)+1}$ ($1 \leq i \leq k$).

He became interested in whether it is possible to get the array $b$ using only these operations. Since Egor is still a beginner programmer, he asked you to help him solve this problem.

The operation $\%$ means taking the remainder, that is, $a\%b$ is equal to the remainder of dividing the number $a$ by the number $b$.

Input

The first line of the input contains an integer $t$ ($1 \leq t \leq 10^5$) - the number of test cases.

Each test case consists of two lines. The first line contains two integers $n$ and $k$ ($1 \leq k \leq n \leq 10^5$).

The second line contains the array $b_1, b_2, \ldots, b_n$ ($1 \leq b_i \leq n$).

It is guaranteed that the sum of $n$ over all test cases does not exceed $2 \cdot 10^5$.

Output

For each test case, output "YES" (without quotes) if there is a way to get the array $b$ using only the given operation. Otherwise, output "NO" (without quotes). You can output each letter in any case (lowercase or uppercase). For example, the strings "yEs", "yes", "Yes" and "YES" will be accepted as a positive answer.

ExampleInput
6
5 3
2 3 5 3 4
4 2
2 4 3 1
1 1
1
3 1
1 2 3
5 3
5 4 3 2 1
6 1
1 2 3 1 5 6
Output
YES
NO
YES
YES
NO
NO
Note

Let's consider the first example:

  • Apply the operation with $l$ = $[1,2,3]$. Now $a$ = $[2,3,1,0,0]$.
  • Apply the operation with $l$ = $[3,5,4]$. Now $a$ = $[2,3,5,3,4]$ = $b$.
We see that it is possible to get the array $b$. Therefore, the answer is YES.

In the second example, it can be proven that the array $b$ cannot be obtained, therefore the answer is NO.

Output

题目大意:
Egor有一个长度为n的数组a,初始时全部为0。他想要将数组a转换为另一个长度为n的数组b。可以使用以下操作(可能使用零次或多次):
- 选择一个长度为k的数组l(1≤li≤n,所有li都互不相同),并将每个元素a[li]更改为l[(i%k)+1](1≤i≤k)。
Egor想要知道是否仅通过这些操作就能得到数组b。由于Egor是编程初学者,他请求你帮助他解决这个问题。

输入数据格式:
输入的第一行包含一个整数t(1≤t≤10^5)——测试用例的数量。
每个测试用例包含两行。第一行包含两个整数n和k(1≤k≤n≤10^5)。
第二行包含数组b[1], b[2], …, b[n](1≤bi≤n)。
保证所有测试用例的n之和不超过2×10^5。

输出数据格式:
对于每个测试用例,如果只使用给定的操作就能得到数组b,则输出"YES"(不包含引号)。否则,输出"NO"(不包含引号)。每个字母的大小写都可以(小写或大写)。例如,"yEs"、"yes"、"Yes"和"YES"都将被接受为肯定回答。

示例:
输入:
```
6
5 3
2 3 5 3 4
4 2
2 4 3 1
1 1
1
3 1
1 2 3
5 3
5 4 3 2 1
6 1
1 2 3 1 5 6
```
输出:
```
YES
NO
YES
YES
NO
NO
```
注意:
- 对于第一个示例,可以应用操作l=[1,2,3],得到a=[2,3,1,0,0],然后应用操作l=[3,5,4],得到a=[2,3,5,3,4]=b。因此,答案是YES。
- 对于第二个示例,可以证明无法得到数组b,因此答案是NO。题目大意: Egor有一个长度为n的数组a,初始时全部为0。他想要将数组a转换为另一个长度为n的数组b。可以使用以下操作(可能使用零次或多次): - 选择一个长度为k的数组l(1≤li≤n,所有li都互不相同),并将每个元素a[li]更改为l[(i%k)+1](1≤i≤k)。 Egor想要知道是否仅通过这些操作就能得到数组b。由于Egor是编程初学者,他请求你帮助他解决这个问题。 输入数据格式: 输入的第一行包含一个整数t(1≤t≤10^5)——测试用例的数量。 每个测试用例包含两行。第一行包含两个整数n和k(1≤k≤n≤10^5)。 第二行包含数组b[1], b[2], …, b[n](1≤bi≤n)。 保证所有测试用例的n之和不超过2×10^5。 输出数据格式: 对于每个测试用例,如果只使用给定的操作就能得到数组b,则输出"YES"(不包含引号)。否则,输出"NO"(不包含引号)。每个字母的大小写都可以(小写或大写)。例如,"yEs"、"yes"、"Yes"和"YES"都将被接受为肯定回答。 示例: 输入: ``` 6 5 3 2 3 5 3 4 4 2 2 4 3 1 1 1 1 3 1 1 2 3 5 3 5 4 3 2 1 6 1 1 2 3 1 5 6 ``` 输出: ``` YES NO YES YES NO NO ``` 注意: - 对于第一个示例,可以应用操作l=[1,2,3],得到a=[2,3,1,0,0],然后应用操作l=[3,5,4],得到a=[2,3,5,3,4]=b。因此,答案是YES。 - 对于第二个示例,可以证明无法得到数组b,因此答案是NO。

加入题单

上一题 下一题 算法标签: