- 一.\(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\) 的网格,右边界和上边界标记了胜负,两个人从左下角出发轮流移动同一枚棋子,问是否先手必胜
结论提
发现除了最外面的两层之外同一对角线的状态相同
直接做就行了
有很多变种,比如右上边界不规则,结论是一样的
标签:边界,博弈论,异或,SG,mex,函数 来源: https://www.cnblogs.com/mikufun-hzoi-cpp/p/12589653.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。