省选博弈专题
省选博弈专题
-
Games on DAG
发现 \(n \le 15\),结合一些东西容易想到枚举子集。
容斥一下等价于求 \(sg_1 = sg_2\) 的个数,想到按照 \(sg\) 分层图。
发现如果正着做,对于当前层的每个点都需要之前的层来连边,也就是说要维护之前每层的点集,显然不可做。
考虑倒着做,发现其只需要当前这层对每个之后层的点连边即可,不区分具体层数,十分可做。
于是我们形式化的描述一下限制,设当前将要处理集合 \(S\),之前已经处理集合 \(T\),\(K \cup T = S \land K \cap T = \varnothing\),即 \(K\) 是这层新增节点。
对于 \(u \in S\)
\(u \in T\) 则 \(u\) 对 \(K\) 内的点任意连边或不连。
\(u \in K\) 则 \(u\) 对 \(T\) 内的点至少连 \(1\) 条边。
处理一下 \(u\) 到集合 \(X\) 的连边数即可 \(\mathcal{O}(3 ^ n n)\)。
-
Black and White Tree
这个是水了。
容易发现先手一定能牵制后手,即先手每次选一个点使得起所有儿子都是叶子,如果这个点不只有一个儿子,则先手必胜,并且一定不劣。
于是模拟一圈圈剥叶子即可,其本质上是一棵树的完美匹配,有个还算有点意思的结论是其等价于没有一个点有奇数个儿子。
-
Candy Piles
首先先降序排序,画出网格图可以发现其等价于每次消行或消列,等价于从左下出发每次向上或向右走一个。
打个表容易发现其副对角线上的所有 \(sg\) 值相等,证明也不太难,简单分讨即可。
注意判一下可能会在终点处有相等,即可以从右转移。
-
Decrementing
你先发现一个 \(1\),如果有 \(1\) 则所有 \(gcd\) 都是 \(1\),于是问题就是统计偶数个数(因为要剩一个)。
一下所有奇数均不包括 \(1\)。
首先显然的是因为保证任意时刻 \(\gcd = 1\) 所以不可能全是偶数。
若有奇数个偶数,此时先手只要保持即可胜利,即将一个偶数变成奇数,这样后手时至少有两个奇数,无论如何选都无法改变奇偶性。
若有偶数个偶数,此时先手只有一个翻盘的机会,若有唯一一个奇数,则可以将这个减成偶数在除 \(gcd\),然后吧决策让给后手。
最多递归 \(log\) 层,复杂度 \(n \log ^ 2 n\)
-
Rearranging
首先先考虑青木如何做,考虑每个数最早能放到哪,发现任意两个不互质的数不会交换,于是建图,将 \(u\) 于在它后面且不和他互质的数连单向边,最后就是跑最大拓扑序。
考虑高木的操作,可以看成是对每个连通块定向成 DAG。
比较显然的贪心定向就是 dfs 每次选最小的点。
-
取石子游戏
再次被背刺。
考虑 \(dp_{l,r}\) 表示 \(l, r\) 是否先手必胜。
发现没法转移,考虑加一维, \(L_{l,r,v}, R_{l,r,v}\) 表示在左、右加一个数 \(x\) 是否先手必胜。
发现状态太大了,考虑键值互换,发现对于任意一边其最多有一个值先手必败,考虑若有两个可以将大的那个经过一步转移到小的,显然矛盾。
然后就是逆天分讨转移,我懒得写了,建议参考其他题解。
7、8 看鲜花
本文来自博客园,作者:5k_sync_closer,转载请注明原文链接:https://www.cnblogs.com/xrlong/p/18660280
版权声明:本作品采用 「署名-非商业性使用-相同方式共享 4.0 国际」许可协议(CC BY-NC-SA 4.0) 进行许可。