#P15576. [USACO26FEB] Good Cyclic Shifts G
[USACO26FEB] Good Cyclic Shifts G
说明
对于一个 的排列 (),定义 。如果一个排列能够通过至多 次相邻元素交换变为 (恒等排列,identity permutation)的排列,则称该排列是 好的。
给定一个排列,找出它的哪些循环移位是好的。
输入格式
输入包含 ()个独立的测试用例。每个测试用例的格式如下:
第一行包含 。
第二行包含 (),保证是 的一个排列。
保证所有测试用例的 之和不超过 。
输出格式
对于每个测试用例,输出两行:
第一行输出好的循环移位的数量 。
然后输出一行,包含 个按升序排列的整数 (),表示将 向右循环移位 次后得到的排列是好的。
3
5
5 4 3 2 1
4
1 2 4 3
5
1 2 3 4 5
0
2
0 1
5
0 1 2 3 4
提示
考虑第二个测试用例,其中 。
- $f(p) = (|1 - 1| + |2 - 2| + |4 - 3| + |3 - 4|) / 2 = 1$。因为 可以通过交换 和 一次操作变为恒等排列,所以 是好的。
- 将 向右循环移位 次,得到 。$f(q) = (|3 - 1| + |1 - 2| + |2 - 3| + |4 - 4|) / 2 = 2$。因为 可以通过将 向前交换两步变为恒等排列,所以 是好的。 可以看出另外两个循环移位不是好的。
评分标准
- 输入 2:
- 输入 3-5:
- 输入 6-11:无额外限制。
题目来源:Akshaj Arora
翻译由 DeepSeek 完成
京公网安备 11011102002149号