首页 > 其他分享 >CF1838B

CF1838B

时间:2023-08-22 21:11:46浏览次数:31  
标签:... 排列 两个 交换 CF1838B 我们

原题

翻译

连B题都做不出来,NOIP大寄了

首先我们至少有两个排列\(\{1\}\)和\(\{1,2,...,n\}\),我们考虑是否存在一个方案使得整个排列在交换两个元素后始终可以只有这两个排列

首先如果一个排列不是\(\{1\}\),那这个排列肯定含有\(2\),同理如果一个排列不是\(\{1,2,3,...,n\}\),那这个排列肯定没有\(n\)

所以我们只需要保证这个排列\(n\)和\(2\)要么同时有,要么同时无即可

所以我们只考虑\(1,2,n\)三个数的相对位置,如果\(n\)在\(1,2\)的中间,那我们并不需要交换位置(puts("1 1");即可)

而否则我们一定可以通过一次交换让\(n\)到\(1,2\)的中间,所以只有两个子段是排列是始终可以取到的

最终复杂度\(O(n)\)

标签:...,排列,两个,交换,CF1838B,我们
From: https://www.cnblogs.com/fox-konata/p/17649694.html

相关文章