qoj4808 Great Party
题意
同 nim 游戏,但是每次操作后可以选择把操作后的石子和另一堆合并。
给出 \(n\) 和长为 \(n\) 数组 \(a\),有 \(q\) 组询问,每次询问给出 \(l,r\),问在 \(a_l\sim a_r\) 内有多少子区间满足先手必胜。
思路
当只有 \(1\) 堆石子时,先手必胜。
当只有 \(2\) 堆石子时,有石子数量不相等时先手必胜(普通 nim 游戏),因为这时候双方都不都不希望减少石子堆数。
当有 \(3\) 堆石子时,先手可以把石子取成 \(2\) 堆相等的石子,先手必胜。
当有 \(4\) 堆石子时,同理双方都不希望减少石子堆数,否则会变成上面的必胜局面,因此每堆石子最多剩 \(1\) 个,之后堆数便会减少,于是跟普通的 nim 游戏一样当每堆石子数量减 \(1\) 的异或和不为 \(0\) 时先手必胜。
当有 \(5\) 堆石子时,先手想要把局面变成 \(4\) 堆且石子数量减 \(1\) 的异或和为 \(0\) 的局面,显然可以对最大的石子操作。
对于之后的情况,和 \(4\) 堆与 \(5\) 堆石子的情况相同。因此当区间长度为奇数或石子个数减 \(1\) 的异或和不为 \(0\) 时先手必胜,可以使用莫队解决。

浙公网安备 33010602011771号