博弈主要有两种,一种是bash博弈,另一种是nim博弈。
对于巴士博弈,基本定义见百度文库,其基本题目类型是:只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。
最简单的题目见杭电2188 2188,杭电2149,杭电1846都是较为简单的巴士博弈题目。而杭电1517和2897,则相对有些变化,因为它的类型从区间【1,n】变成了【m,n】,但是其本质上还是找临界点,如果对巴士博弈理解了,就不会觉得很难了。这类题目主要是根据临界点判断是先手赢还是后手赢,然后扩展一下,就是最后一次抓的个数。
妮姆博奕则是对几堆“石子”取,直到取完。基本概念见nim游戏,基本题目类型是:有若干堆石子,每堆石子的数量都是有限的,合法的移动是“选择一堆石子并拿走若干颗(不能不拿)”,如果轮到某个人时所有的石子堆都已经被拿空了,则判负(因为他此刻没有任何合法的移动)。杭电题目有1849、1850等等,一般都是异或运算(虽然我也不知道为什么用异或运算),然后再加上什么限制条件什么的。
ans^=x 为循环算出最后结果是否为0,然后再根据题目条件完善代码即可!
待完善……