其他分享
首页 > 其他分享> > LGP3322口胡

LGP3322口胡

作者:互联网

首先可以观察得到两个结论:

  1. 交换两个操作的操作顺序不会影响操作序列是否合法。

显然是正确的,模拟一下即可。

  1. 任意操作序列无法使序列变回原本的序列。

考虑最长的操作和别的所有的操作,区间长度不相同,因此一定有元素被 swap 了。

以上两点告诉我们,答案只有一种,只需要求出操作数量然后阶乘即可。

因为第一个结论的存在所以我们可以从操作长度从小往大考虑。

考虑正在执行第 \(i\) 次操作,将序列划分为 \(2^{n-i+1}\) 段后,若满足段内元素 \(\gcd(|k-p[k]|)=2^{i-1}\) 的段的数量不为 \(2\) 则一定无解(后面的操作无法改变多余的段,如果只有一段则交换操作无效),否则交换这两段即可。

复杂度 \(O(n\log n)\)。

标签:交换,即可,长度,序列,操作,考虑,LGP3322
来源: https://www.cnblogs.com/lmpp/p/16516180.html