传送门:CF768E
题解
法1:
如果没有每堆石子每次取的石子个数必须不同的限制,就是一个裸的Nim游戏。
但考虑每堆石子可以被取的最多次数 k i ( k i ( k i + 1 ) 2 ≤ s i ) k_i(\frac{k_i(k_i+1)}{2}\leq s_i) ki(2ki(ki+1)≤si),实际上可以把每堆石子看做有 k i k_i ki个,这样就没有取的个数不同的限制了。
直接求 k i k_i ki的异或和即可。
法2:
打表求出一堆石子的
s
g
sg
sg函数:
发现长这样:
sg[x] = {0,1,1,2,2,2,3,3,3,3,4,4,4,4,4,5,5,5,5,5,5……}
于是直接求 s g [ s i ] sg[s_i] sg[si]的异或值即可。