摘要:
/**State: *题目大意:* Alice和Bob轮流取N堆石子,每堆S[i]个,Alice先,* 每一次可以从任意一堆中拿走任意个石子,也可以将* 一堆石子分为两个小堆。先拿完者获胜。(1 ≤ N ≤ 10^6,* 1 ≤ S[i] ≤ 2^31 - 1)*解题思路:* 找sg规律。*解题感想:* 一看数据规模就知道sg不靠谱,应该是规律型的。* 自己用笔模拟了大半天,模拟得蛋疼了之后干脆写成* 代码吧,结果计算机一算就是靠谱些(用笔还模拟错了,* 怪不得一开始没... 阅读全文
摘要:
/**State: 3094 156MS 2144K 1315 B C++*题目大意:* 给定n棵树(树中包括简单的多边形),每棵树有m个结点(1~m)和k条边* (结点1给根节点)。Harry和Sally轮流删除树上的一条边,并切移除所* 以和根节点不再连通的所有边和结点。最后不能再删除边的一方为输。*解题思路:* 叶子节点的 SG 值为 0;中间节点的 SG 值为它的所有子节点的 SG 值* 加 1 后的异或和。(加1是因为拆成链的时候,要考虑到链头结点,因为* 算的其实就是链头的结点。... 阅读全文
摘要:
/**State: HDU3595 62MS 272K 1262 B C++*题目大意:* 给定两个整数,两人轮流从较大的数中减去较小数的倍数(所有的结果数都非0)。* 直到不能再减者为输。而且有n个游戏同时进行。*解题思路:* 先用gcd来求出谁胜谁负,当第一个出现a % b == 0 || a / b > 2的时候,这轮选* 手就胜利,然后要记录路径,由最后的胜者来根据记录的路径来计算这一局的次数。* 由于是n个游戏同时进行,而且可以走就要走光所有,所以只需记录最长的那一局* 即是... 阅读全文