![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
博弈论
文章平均质量分 57
浇糖玛奇朵
会了,但完全没有会
展开
-
hdoj 1847 博弈(打表,找规律)
一堆牌,轮流拿,每次只能拿2的幂次张牌,判断输赢。 最后结论是牌数为3的倍数时先手输 结论很简单,但一开始真看不出来,先打个表看一下,毕竟数据不大,<=1000,直接打表做一下: 思路: 首先sg[ i ]=0,必败。 对于每一数量 i,分析所有第一次能拿的数量 f [ j ],如果sg[ i - f [ j ] ]==0, 说明先手拿完f [ j ]张牌以后剩下的数量对于另一个人是必败的,那么对于先手来说就是必胜的。分析所有可以拿的数量,如果都是先手败的情况,那对于这个数量就是先手必败,sg[ i原创 2021-08-24 21:11:16 · 127 阅读 · 0 评论 -
hdoj 1850 nim博弈
题目意思就是若干堆牌,如果先手必胜的话先手第一步有几种拿牌方式。 首先nim博弈判断输赢的方法是 如果异或和为0则先手必败,不等于0则先手必胜。对于先手必胜的情况,先手第一步拿完牌之后剩下的牌对于后手应该是必败的情况,也就是剩下牌异或和为0。 m堆牌,a1, a2, a3, … ,am 假设此时是先手必胜的局面,则异或和ans = a1^ a2^ a3 ^ … ^am > 0 现在假设先手第一步在 a1堆牌里拿走x张 ,此时a1变为 a1’ ,如果这么拿是可行的话,那么现在的牌面 a1’, a2, a原创 2021-08-26 09:28:35 · 84 阅读 · 0 评论