首页 > 其他 > 详细

题解CF1541A 【Pretty Permutations】

时间:2021-07-17 18:17:09      阅读:43      评论:0      收藏:0      [点我收藏+]

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

  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】

原文:https://www.cnblogs.com/qinyihao/p/solution-cf1541a.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!