本题要求构造一个与给定排列 p 不同的排列 q,使得 q 的“活跃位置”个数与 p 的活跃位置个数完全相同。
活跃位置的定义为:位置 i(1≤i<n)是活跃的,当且仅当存在某个 j 满足 i<j≤n 且 ai>aj(即后面有一个比自己小的元素)。
我们可以通过在最右侧的一个下降点附近做一次局部交换来构造满足条件的 q,具体步骤如下:
NO。定义一个长度为 n 的排列(1∼n 的排列)的“活跃位置”如下:对于位置 i(1≤i<n),若存在某个位置 j 满足 i<j≤n 且 ai>aj,则称 i 是活跃的。
现在给出一个排列 p,请你构造另一个排列 q,要求 q 与 p 不同,但它们的活跃位置个数完全相同。若不存在这样的 q,则说明无解。
约束条件:
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.