博弈论

  • 一.\(SG\) 函数

 定义 \(SG(S)=mex(SG(T))\),\(T\) 为 \(S\) 的后继状态

 一般来说,博弈论的许多题都可以把一整个局面分成一个个互不影响的小局面

 这样的话有 \(SG(S)=SG(T_1)\ xor\ SG(T_2)[T_1+T_2=S]\)

 一般来说,\(SG\) 函数的题遵循一个套路

  • 1.设暴力 \(dp\)

  • 2.打表找规律

  • 3.AC

 这样的题就不细讲了,写几个不寻常的

一棵树,两个人把一个点到根的路径上的点染黑,求 \(SG\) 函数

 考虑一次操作相当于把一个点到根路径上的所有点删掉

 那么如果我们处理出来了每个点子树的 \(SG\) 函数,直接做复杂度 \(O(n^2)\) 的

 考虑处理 \(p[u][v]\) 表示在 \(u\) 为根时删掉 \(v\) 之后的 \(SG\) 值

 考虑这个玩意的转移发现是赋值成某个儿子的 \(p\) 数组再异或上其他儿子的 \(SG\) 值

 所以我们需要的就是区间异或以及求 \(mex\)

 这个东西可以很容易用字典树维护出来

 赋值可以直接字典树合并

  • 二.杂题

一个 \(n\times m\) 的网格,右边界和上边界标记了胜负,两个人从左下角出发轮流移动同一枚棋子,问是否先手必胜

 结论提

 发现除了最外面的两层之外同一对角线的状态相同

 直接做就行了

 有很多变种,比如右上边界不规则,结论是一样的

上一篇:[ElasticSearch]#解决问题#修改Search Guard密码时 报错:ERR: Seems there is no Elasticsearch running on localhost:


下一篇:HDU1255 覆盖的面积(线段树+扫描线)