题解CF1541A 【Pretty Permutations】

如果您能看懂下列提示,请先尝试去做一下题目,别着急看正式的题解

  1. 奇偶性( \(n\) 是奇数还是偶数)很重要。
  2. 交换两只相邻的猫,使它们都保持在原来的位置附近,并改变它们的位置。
  3. 如果 \(n\) 是偶数,最佳距离是 \(n\) ,如果 \(n\) 是奇数,最佳距离是 \(n + 1\)

有两种情况。

  1. 如果 \(n\) 是偶数,输出 [2,1,4,3,6,5...n,n-1]。形式上,你每隔一对相邻元素就交换一次。这是最优的,因为总的距离是n,它必须是最小的,因为一只猫的距离必须 \(\geq 1\)
  2. 如果 \(n\) 是奇数,首先打印 [3,1,2] ,然后解决剩余元素的偶数情况。这是最优的,因为距离是 \(n+1\) ,这必须是最小的,因为 \(n\) 的距离是不可能实现的。

code:

for _ in range(int(input())):
    n=int(input())
    a=[i for i in range(1,n+1)]
    for i in range(0,n-1,2):
        a[i],a[i+1]=a[i+1],a[i]
    if(n%2!=0):
        a[n-2],a[n-1]=a[n-1],a[n-2]
    print(*a)

题解CF1541A 【Pretty Permutations】

上一篇:maven mvn archetype:generate使用


下一篇:[LeetCode] #13 罗马数字转整数