CF1893A.Anonymous Informant
普及/提高-
通过率:0%
时间限制:3.00s
内存限制:512MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
You are given an array b1,b2,…,bn.
An anonymous informant has told you that the array b was obtained as follows: initially, there existed an array a1,a2,…,an, after which the following two-component operation was performed k times:
- A fixed point† x of the array a was chosen.
- Then, the array a was cyclically shifted to the left‡ exactly x times.
As a result of k such operations, the array b1,b2,…,bn was obtained. You want to check if the words of the anonymous informant can be true or if they are guaranteed to be false.
†A number x is called a fixed point of the array a1,a2,…,an if 1≤x≤n and ax=x.
‡A cyclic left shift of the array a1,a2,…,an is the array a2,…,an,a1.
给你一个数组 b1,b2,…,bn。
一位匿名线人告诉你:数组 b 是通过如下方式得到的:最初存在一个数组 a1,a2,…,an,然后对该数组重复执行以下两步操作共 k 次:
- 选择数组 a 的一个不动点† x;
- 接着将数组 a 向左循环移位‡ 恰好 x 次。
经过 k 次这样的操作后,得到了数组 b1,b2,…,bn。你想判断这位匿名线人的话是否可能为真,还是必然为假。
† 若满足 1≤x≤n 且 ax=x,则称数 x 为数组 a1,a2,…,an 的一个不动点。
‡ 数组 a1,a2,…,an 的向左循环移位是指数组 a2,…,an,a1。
输入格式
Each test contains multiple test cases. The first line contains an integer t (1≤t≤104) — the number of test cases. The description of the test cases follows.
The first line of each test case contains two integers n,k (1≤n≤2⋅105, 1≤k≤109) — the length of the array b and the number of operations performed.
The second line of each test case contains n integers b1,b2,…,bn (1≤bi≤109) — the elements of the array b.
It is guaranteed that the sum of the values of n for all test cases does not exceed 2⋅105.
每个测试包含多个测试用例。第一行包含一个整数 t(1≤t≤104),表示测试用例的数量。随后是各测试用例的描述。
每个测试用例的第一行包含两个整数 n,k(1≤n≤2⋅105,1≤k≤109),分别表示数组 b 的长度以及执行的操作次数。
每个测试用例的第二行包含 n 个整数 b1,b2,…,bn(1≤bi≤109),表示数组 b 的元素。
保证所有测试用例的 n 值之和不超过 2⋅105。
输出格式
For each test case, output "Yes" if the words of the anonymous informant can be true, and "No" if they are guaranteed to be false.
对于每个测试用例,如果匿名线人的陈述可能为真,则输出“Yes”;如果其陈述必然为假,则输出“No”。
输入输出样例
输入#1
6 5 3 4 3 3 2 3 3 100 7 2 1 5 5 6 1 1 1 1 1 1000000000 1 8 48 9 10 11 12 13 14 15 8 2 1 1 42
输出#1
Yes Yes No Yes Yes No
说明/提示
In the first test case, the array a could be equal to [3,2,3,4,3]. In the first operation, a fixed point x=2 was chosen, and after 2 left shifts, the array became [3,4,3,3,2]. In the second operation, a fixed point x=3 was chosen, and after 3 left shifts, the array became [3,2,3,4,3]. In the third operation, a fixed point x=3 was chosen again, and after 3 left shifts, the array became [4,3,3,2,3], which is equal to the array b.
In the second test case, the array a could be equal to [7,2,1]. After the operation with a fixed point x=2, the array became [1,7,2]. Then, after the operation with a fixed point x=1, the array returned to its initial state [7,2,1]. These same 2 operations (with x=2, and x=1) were repeated 49 times. So, after 100 operations, the array returned to [7,2,1].
In the third test case, it can be shown that there is no solution.
在第一个测试用例中,数组 a 可能等于 [3,2,3,4,3]。在第一次操作中,选择固定点 x=2,经过 2 次左移后,数组变为 [3,4,3,3,2]。在第二次操作中,选择固定点 x=3,经过 3 次左移后,数组变为 [3,2,3,4,3]。在第三次操作中,再次选择固定点 x=3,经过 3 次左移后,数组变为 [4,3,3,2,3],该结果与数组 b 相等。
在第二个测试用例中,数组 a 可能等于 [7,2,1]。在固定点 x=2 的操作之后,数组变为 [1,7,2];接着,在固定点 x=1 的操作之后,数组恢复为初始状态 [7,2,1]。上述相同的 2 次操作(即分别取 x=2 和 x=1)被重复执行了 49 轮。因此,在总共 100 次操作之后,数组最终回到 [7,2,1]。
在第三个测试用例中,可以证明不存在满足条件的解。
输入解题思路,AI测评打分。不知道怎么写?