题意简述
交互题。给定一个正整数 $n$,两人玩游戏。游戏分两步:
- 先手把 $1$ 到 $2n$ 拆成 $n$ 对。
- 后手在每对中,选择恰好一个数。
如果选出的数之和为 $2n$ 的倍数,则后手胜,否则先手胜。
自己选择扮演先手还是后手,并给出必胜策略。$n\le 5\times 10^5$。
主要思路
$n$ 是偶数时,先手必胜。
构造 $(i, n + i)$ 即可。此时无论怎么选,最后和都 $\bmod\ n$ 为 $\binom{n}{2}$。
那么下面考虑 $n$ 为奇数。
发现若已经得到了和 $\bmod\ 2n$ 为 $n$ 的方案,取不在方案内的 $n$ 个数即满足和为 $2n$ 的倍数。
于是条件就弱化为「和为 $n$ 的倍数」。
发现总有一种方案使得 $\bmod\ n = 0, 1, \cdots, n - 1$ 的数各出现一次。证明如下:
考虑一张 $n$ 个点的图,并对于每一对数 $(x, y)$,将 $x\bmod n, y\bmod n$ 间连一条边。
那么每个点的度都为 $2$,故整张图必定是若干个环。
考虑一个大小为 $m$ 的环实际上是 $m$ 对数,每对数只能选一个;$\bmod n$ 相等的也恰好组成 $m$ 对。所以直接选出 $m$ 个数两两不同对且不 $\bmod n$ 相等即可。
于是做完了,复杂度线性。
参考代码
1 |
|