day6
P7589 黑白棋
观察到后退操作非常局限,只要自己贴近了,对手就会被卡住反复后退。
因此根本用不出这个操作,那原问题就相当于 Nim 游戏。
阶梯 Nim
大概是说序列 \(0\) 位置是垃圾桶,每次可以把 \(i\) 移交任意石子给 \(i-1\),不能操作者负。
这个问题咋看没啥思路,但有个很巧妙的方法:取一个特征量,保持其不变。
对于偶数 \(i\),当一个人将一些石子移到 \(i-1\) 时,另一个人可以把等量的石子移到 \(i-2\),于是奇数 \(i\) 上的石子总数总不会改变。
这个操作先后手都能做,那么它的影响对于先后手都不存在,于是只有奇数 \(i\) 上的石子是有用的,且操作相当于取石子,终态是和为 \(0\)。
于是相当于奇数位置上的 Nim 游戏,这就是阶梯 Nim。
P2575 高手过招
显然这个 20 没啥用,然后可以看作多个游戏。
移动棋子的方式比较鬼畜,画出来容易发现看成把空格之间的棋子合并拆分,而且只能往左放,那这就是个阶梯 Nim。
loj6364 烂柯
把 \(k\) 当作根,按深度奇偶性分类,相当于树上阶梯 Nim。
P13114 Bacterial Tactics
不是博弈。是个公平组合游戏,可以求 SG 值。
设 \(f(x_1,y_1,x_2,y_2)\) 为一个矩形的 SG 值,枚举先手操作进行转移。
P13263 Willow
讨论题,枚举第一条边,然后分 同向/异向/相向 讨论。
前两种情况可以简单处理,最后一种也可以预处理一些信息出来递推。
CF1037G A Game on Strings
显然可以对 SG 值区间 dp,然后考虑这个区间 dp。
注意到游戏的状态数实际很少,因为操作一次后除了两端,其余生成的串端点都是同字符。
称两端同字符的串为一般串,不同的为特殊串。
因为一般串是极小的,所以个数是 \(\mathcal{O}(n)\) 的,特殊串可以看作一般串的前后缀,个数是 \(\mathcal{O}(n|\Sigma|)\) 的。
处理一下一般串的前缀异或和,然后直接记忆化貌似就是对的。
CF1704F Colouring Game
对于 RB 分开的位置,然后互相独立,一定是对形如 WRRRRW 的从外往内逐个 R 消去,因此只需比较两种颜色的个数。
对于 RB 连续的位置,先后手都会争抢。
考虑做一次 RB,两个颜色消去一样的数量,最后还是判断起始的 RB 个数,然而此时可能攻守之势异也。
不过有影响的也只是初始 RB 数相同的情况,初始 RB 数不同的话,就算反转了救不回来。
因此这个问题相当于不断删 RB,删不了的负。
考虑初始的 RBRBRB 这样的段,每段独立且一次操作会将其断开。
据此 dp 其 SG 值 \(f_i\),然后发现它有循环节,就完了。
CF725F Family Photos
对一张照片讨论。
若 \(a_1+b_1\ge a_2+b_2\),那么先后手都想要第一张。
否则考虑 \(a_1+b_1<a_2+b_2\),两个人都不想要第一张,那这对照片就拿不走了。
不过思考一下,取完前面的若干对,那如果剩下 \(a_1>b_2\),先手就不取白不取,反之 \(b_1>a_2\),后手不取白不取。
是否存在后手看到先手取了个 \(a_1\),然后跑去另外拿一张的情况?
不可能,如果此时没出现一个人拿一对,那么是可以归类到上面的,如果此时有一个人拿一对,比较一下发现也可以归类到上面。
AGC010D Decrementing
注意到有 \(1\) 就胜负已定,且只关注 \(\sum{a_i-1}\) 奇偶性。
因此考虑是否存在维持和改变奇偶性的做法。
显然希望 \(\gcd{a_i-1}\) 是奇数,这样就不会因为除法改变奇偶性。
注意到对于 \(\sum{a_i-1}\) 为奇数先手占优,此时若有一个 \(a_i\) 是奇数,那么先手可以减少一个偶数 \(a_j\),这样至少有两个奇数给后手。
后手做完之后,因为不涉及除法,所以先手维持了自己优的奇偶性。
如果一开始 \(\sum{a_i-1}\) 是偶数,那么先手就需要想办法翻盘。
显然后手可以用一样的操作控制局面,因此先手必须在第一步就做出一个除法,也就是对序列里唯一的奇数 \(a_i\) 做一次减少。
做完后如果 \(\sum{a_i-1}\) 仍然是偶数,后手也可以尝试翻盘,方法同理。
然而能翻盘就必定会做除法,那么最多模拟 \(\mathcal{O}(\lg V)\) 轮就可以直接判断。
CF1149E Election Promises
既然没有环,那就很好说了。
考虑链,发现这个东西类似阶梯 Nim。
考虑 DAG,发现这个东西要做成阶梯 Nim 需要一个适合的分组。
就像奇偶性分组一样可以一步维持局面,那我们一步操作就能干掉所有组。
比较神秘地可以想到 \(\operatorname{MEX}\) 就是满足这个性质的!
于是直接在 DAG 上跑出 sg 函数然后按照这个分组模拟即可。
P9537 Qingshan and Daniel 2
ABC398GNotOnlyTreeGame

浙公网安备 33010602011771号