CF1828B.Permutation Swap
入门
通过率:0%
时间限制:1.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
You are given an unsorted permutation p1,p2,…,pn. To sort the permutation, you choose a constant k (k≥1) and do some operations on the permutation. In one operation, you can choose two integers i, j (1≤j<i≤n) such that i−j=k, then swap pi and pj.
What is the maximum value of k that you can choose to sort the given permutation?
A permutation is an array consisting of n distinct integers from 1 to n in arbitrary order. For example, [2,3,1,5,4] is a permutation, but [1,2,2] is not a permutation (2 appears twice in the array) and [1,3,4] is also not a permutation (n=3 but there is 4 in the array).
An unsorted permutation p is a permutation such that there is at least one position i that satisfies pi=i.
给你一个未排序的排列 p1,p2,…,pn。为了将该排列排序,你需要选定一个常数 k(k≥1),然后对该排列执行若干次操作。每次操作中,你可以选择两个整数 i、j(满足 1≤j<i≤n 且 i−j=k),然后交换 pi 和 pj。
你能选择的、使得该排列可被排序的最大 k 值是多少?
排列是指由 1 到 n 的 n 个互不相同的整数组成的任意顺序的数组。例如,[2,3,1,5,4] 是一个排列,但 [1,2,2] 不是排列(数字 2 在数组中出现了两次),[1,3,4] 也不是排列(此时 n=3,但数组中出现了 4)。
未排序的排列 p 是指至少存在一个位置 i 满足 pi=i 的排列。
输入格式
Each test contains multiple test cases. The first line contains the number of test cases t (1≤t≤104). The description of the test cases follows.
The first line of each test case contains a single integer n (2≤n≤105) — the length of the permutation p.
The second line of each test case contains n distinct integers p1,p2,…,pn (1≤pi≤n) — the permutation p. It is guaranteed that the given numbers form a permutation of length n and the given permutation is unsorted.
It is guaranteed that the sum of n over all test cases does not exceed 2⋅105.
每个测试包含多个测试用例。第一行包含测试用例的数量 t(1≤t≤104)。随后是各测试用例的描述。
每个测试用例的第一行包含一个整数 n(2≤n≤105)—— 表示排列 p 的长度。
每个测试用例的第二行包含 n 个互不相同的整数 p1,p2,…,pn(1≤pi≤n)—— 即排列 p。保证所给数字构成一个长度为 n 的排列,且该排列是非升序也非降序的(即未排序)。
保证所有测试用例的 n 值之和不超过 2⋅105。
输出格式
For each test case, output the maximum value of k that you can choose to sort the given permutation.
We can show that an answer always exists.
对于每个测试用例,输出能使给定排列被排序的最大 k 值。
可以证明答案总是存在。
输入输出样例
输入#1
7 3 3 1 2 4 3 4 1 2 7 4 2 6 7 5 3 1 9 1 6 7 4 9 2 3 8 5 6 1 5 3 4 2 6 10 3 10 5 2 9 6 7 8 1 4 11 1 11 6 4 8 3 7 5 9 10 2
输出#1
1 2 3 4 3 2 3
说明/提示
In the first test case, the maximum value of k you can choose is 1. The operations used to sort the permutation are:
- Swap p2 and p1 (2−1=1) → p=[1,3,2]
- Swap p2 and p3 (3−2=1) → p=[1,2,3]
In the second test case, the maximum value of k you can choose is 2. The operations used to sort the permutation are:
- Swap p3 and p1 (3−1=2) → p=[1,4,3,2]
- Swap p4 and p2 (4−2=2) → p=[1,2,3,4]
在第一个测试用例中,你可以选择的最大 k 值为 1。用于将排列排序的操作如下:
- 交换 p2 和 p1(2−1=1)→ p=[1,3,2]
- 交换 p2 和 p3(3−2=1)→ p=[1,2,3]
在第二个测试用例中,你可以选择的最大 k 值为 2。用于将排列排序的操作如下:
- 交换 p3 和 p1(3−1=2)→ p=[1,4,3,2]
- 交换 p4 和 p2(4−2=2)→ p=[1,2,3,4]
输入解题思路,AI测评打分。不知道怎么写?