SG函数
文章平均质量分 54
冷月残星
这个作者很懒,什么都没留下…
展开
-
SG函数,找规律(石子游戏,LA 5059)
数据范围那么大,用SG函数递推肯定不行,无论空间还是时间都是不允许,只能先用SG函数跑一些小数据,然后打表找规律。找规律的话就是各种观察啊。这次就是看隔几个出现一次,然后就找到规律了。代码#includeusing namespace std;typedef long long ll;ll SG(ll x){ return x&1?SG(x>>1):x;}i原创 2016-11-21 19:08:45 · 365 阅读 · 0 评论 -
SG函数(Treblecross游戏,UVA 10561)
总想着就是一个游戏,然后就想状态压缩DP,或者说是递推,可是长度为200,弄不了呀,然后就不会了。事实上,要学会把一个游戏拆成多个单独的游戏,算出SG函数,然后求一下nim和。关于思路。就是说一个聪明的游戏者肯定不会把X放X旁边或者放X的旁边的旁边,因为一放就输(除非直接赢了)。这游戏就变成了谁先没格子放的问题。X,X旁边,X旁边的旁边的格子把棋盘分成了多个部分,每原创 2016-11-22 00:56:24 · 403 阅读 · 0 评论 -
组合游戏(Circles Game,HDU 5299)
很容易想到这是一个组合游戏。每个子游戏都是一棵有根树上的游戏,最后的答案就是每个子游戏SG值的Nim和。有根树上的游戏就是给你一颗有根树,每次操作可以随便选取一个节点,并把这个节点所在的子树都删掉,不能操作者输。那怎么计算每棵树的SG值呢?一开始尝试用经典的递推法去求,但是发现树的结构种类太多,不可能穷举,每种结构的后续状态也非常多,也不可能用每个后续节点来转移,而且记录树的信息很多,没有原创 2017-05-12 21:51:20 · 955 阅读 · 0 评论