摘要: 首先看出终止状态是全都堆在左边或者右边,然后发现黑的向左白的向右是最优策略(如果不能这样了也就该输了) 然后就不会了 参考 http://www.cnblogs.com/CQzhangyu/p/7707746.html 发现黑白之间的距离一定是不断缩小的,就相当于k堆石子,每次从1~d堆里拿走一些, 阅读全文
posted @ 2018-12-04 15:27 lokiii 阅读(238) 评论(0) 推荐(0) 编辑
摘要: 先手必胜状态是黑三角在边上 然后其他情况脑补一下,n为偶数先手必胜,可以理解为从某一边取,先手总有办法让后手取得一边有奇数个 阅读全文
posted @ 2018-12-04 14:49 lokiii 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 这个东西卡常……预处理的时候要先把i%j,i/j都用变量表示,还要把%2变成&1…… 首先每一堆都是不相关子游戏,所以对于每一堆求sg即可 考虑暴力枚举石子数i,分割块数j,分解成子问题求xor和(其实就是根据i/j,i/j+1的个数的奇偶性xor一下即可),然后对sg[i]暴力mex,这样是n^2 阅读全文
posted @ 2018-12-04 11:29 lokiii 阅读(103) 评论(0) 推荐(0) 编辑
摘要: 先预处理出来sg值,然后先手必败状态就是sg[a[i]]的xor和为0(nim) 如果xor和不为0,那么一定有办法通过一步让xor和为0,具体就是选一个最大的sg[a[i]],把它去成其他sg值的xor和,这样后手的xor和就是0了 当然并不一定要取最大的,只要sg[a[i]] (ans^sg[a 阅读全文
posted @ 2018-12-04 09:20 lokiii 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 必败状态是倒序排列,也就是正序对为0 然后发现,每次翻转都是有奇数个数对(\\( C_{4x+2}^{2} C_{4x+3}^{2} \\) 都是奇数),所以每次翻转丢回改变正反数对的奇偶性 又因为偶数为必败状态,所以顺序对为奇数则必胜 cpp include include using names 阅读全文
posted @ 2018-12-04 08:24 lokiii 阅读(170) 评论(0) 推荐(0) 编辑