277C - Game
假设我们决定在某一行上进行操作,而这一行上有k个未被划去的(单位长度)线段,那么我们的操作可以把未被划去的线段条数变成0到k-1之间的任何数.
还记得那个经典的Nim游戏么?
(n堆石子,每次操作从要从某堆里取任意数量的石子,不能不取,无法操作者负.)
是的,他们是等价的.
这里不加证明的给出结论,当且仅当n堆各自的石子数的xor和不为0,先手有必胜策略.
所以先手每一步都要试图通过操作把这个xor和变成0.
设第i堆石子的数量为a[i],目前所有石子数的xor和是u.
如果我们决定在第i堆拿一些石子,则剩下的石子个数一定要是u xor a[i];于是,当且仅当u xora[i] < a[i], 在第i堆拿石子是可行的.
假设我们决定在某一行上进行操作,而这一行上有k个未被划去的(单位长度)线段,那么我们的操作可以把未被划去的线段条数变成0到k-1之间的任何数.
还记得那个经典的Nim游戏么?
(n堆石子,每次操作从要从某堆里取任意数量的石子,不能不取,无法操作者负.)
是的,他们是等价的.
这里不加证明的给出结论,当且仅当n堆各自的石子数的xor和不为0,先手有必胜策略.
所以先手每一步都要试图通过操作把这个xor和变成0.
设第i堆石子的数量为a[i],目前所有石子数的xor和是u.
如果我们决定在第i堆拿一些石子,则剩下的石子个数一定要是u xor a[i];于是,当且仅当u xora[i] < a[i], 在第i堆拿石子是可行的.