题意简述
给定两个正整数 $n$ 和 $k$($2\le n\le 10^6$,$1\le k\le n$),请输出一个长为 $n$ 的排列,使得其中相邻两项的差的绝对值都不小于 $k$。如果无解,请输出 NIE。
解析
构造题。
我们建一张 $n$ 个节点的无向图,图中两个点有连边当且仅当它们在排列中可以挨着。
我们看看每个节点与编号比自己小的节点的连边情况。
- 对于 $1\le u\le k$ 的节点 $u$,没有编号比 $u$ 小的节点与 $u$ 连边。
- 对于 $k+1\le u\le n$ 的节点 $u$,编号在 $[1,u-k]$ 内的所有节点都与 $u$ 有连边。
根据题意,我们需要找出这张图中的一条哈密顿路径(通过每个节点恰好一次的通路)。
首先,哈密顿路径存在的一个必要条件是图连通。显然,对于点 $k$ 被孤立的情况($n-k\lt k$,即 $n\lt 2k$)一定是无解的。
然后,如果 $n=2k$,那么 $k$ 只与 $n$ 有连边,也就是说路径的一个端点必须为 $k$。容易发现,$[k,n,k-1,n-1,...,1,k+1]$ 是一条合法路径。
如果 $n\gt 2k$,按 $n$ 的奇偶性分类讨论:
- 如果 $n$ 是奇数,那么我们可以先输出 $\frac{n+1}{2}$($1$ 到 $n$ 的中点),然后按照 $n,\frac{n+1}{2}-1,...,\frac{n+1}{2}+1,1$ 的顺序输出即可。
正确性证明:$n-\frac{n+1}{2}=\frac{n-1}{2}$,由于 $n,k$ 都是整数,所以 $\frac{n-1}{2}\ge\frac{2k}{2}=k$。
- 如果 $n$ 是偶数,那么 $[n,\frac{n}{2},...,\frac{n}{2}+1,1]$ 是一个合法路径。
正确性证明:$n-\frac{n}{2}=\frac{n}{2}\gt\frac{2k}{2}=k$。
所以,我们并不需要真的建一张图,只需要判一下 $n$ 与 $2k$ 的大小关系然后按情况输出就可以了。时间复杂度 $\mathcal{O}(n)$。
代码难度极低,因此参考代码不予展示。
尾声
感谢您的阅读,若有不妥还请批评指正。