A16255 | Cyclic Operations
时间限制1s
内存限制256MB
通过 / 提交0/0
题目描述
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$ .
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$ .
输入格式
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$ .
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$ .
输出格式
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.
输入输出样例
输入 #1
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
输出 #1
YES NO YES YES NO NO
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.
- 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.
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?
提交通过
评测结果:Accepted