hdu5011(Nim游戏变形+证明)

来源:互联网 发布:域名怎么解析动态ip 编辑:程序博客网 时间:2024/06/01 10:03
这题很多人都能AC,但是能有多少人会证明呢?
题意:给定n堆石头,两个玩家轮流操作,每次选一堆取走若干石头,然后可以放弃操作,或者把剩下的这堆石头分为两堆,不能操作的人输。

思路分析:  先不考虑分成两堆这个操作,那么就是Nim游戏,异或为0,则为必败态。现在考虑这道题目,1、假如一开始异或得到的结果非0,那么先手肯定能够在某堆中选若干石头,使得异或为0,然后后手无论怎么操作,先手只要跟着他做就可以了,这种情况下先手必胜。2、考虑一开始异或得到的结果为0,先手在某堆中取若干石头,那么现在的异或结果肯定非0,因为先手想赢,他会尽量使得异或结果为0,所以这是他会将剩下的该堆石头分成两堆,这里是关键。现在我要证明异或结果非0的情况,无论怎么拆分以堆石头,异或结果仍然非0.将要操作的堆当做x,剩下的堆异或等效为y,x^y != 0 ,现将x分成x1和x2,如果x1^x2^y = 0,那么x1^x2 = y,这与条件矛盾。因此证明这题和Nim游戏的解法是一样的,分操作可以直接无视。





0 0