![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
博弈
lirh8121099
这个作者很懒,什么都没留下…
展开
-
博弈论(二):Sprague-Grundy函数
上一期的文章里我们仔细研究了Nim游戏,并且了解了找出必胜策略的方法。但如果把Nim的规则略加改变,你还能很快找出必胜策略吗?比如说:有n堆石子,每次可以从第1堆石子里取1颗、2颗或3颗,可以从第2堆石子里取奇数颗,可以从第3堆及以后石子里取任意颗……这时看上去问题复杂了很多,但相信你如果掌握了本节的内容,类似的千变万化的问题都是不成问题的。现在我们来研究一个看上去似乎更为一般的游戏:给定一个转载 2013-02-26 15:05:09 · 369 阅读 · 0 评论 -
HDU 1849 Rabbit and Grass
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1850题目大意:中文题目不解释分析: 赤果果的NIM,再次不解释。代码#include using namespace std;int main(){ int ans,n,t; while(cin >>原创 2013-06-13 21:47:41 · 497 阅读 · 0 评论 -
HDU 1850 Being a Good Boy in Spring Festival
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1850题目大意:中文题目不解释分析: 裸的NIM就是加个分析必胜策略的个数。代码#include #include #include #include using namespace std;int a[原创 2013-06-13 21:42:46 · 467 阅读 · 0 评论 -
HDU 1527 取石子游戏
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1527题目大意:中文题目不解释分析: 赤果果的威佐夫博弈不解释。代码#include#includeint main(){ int a,b,m,k,t; while(~scanf("%d%d"原创 2013-06-13 21:46:06 · 515 阅读 · 0 评论 -
HDU 2897 邂逅明下
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=2897题目大意:中文题目不解释分析: 同样,分析必胜点必败点就行了。 若当前石子共有n = (p+q)*k 或n = (p+q)*k+r,(p个,则为必胜点。代码 #include #in原创 2013-06-13 21:35:39 · 517 阅读 · 0 评论 -
HDU 2516 取石子游戏
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=2516题目大意:中文题目不解释分析: 必败点为斐波那契数。斐波纳契数有个性质:一个非斐波那契数的整数必定能写成了两个非连续斐波那契数的和,而两个非连续的斐波那契数,大数必定超过小数的2倍。根据这个,一个非斐波纳契数每次可以取那两个斐波纳契数中较小数的原创 2013-06-13 21:26:26 · 449 阅读 · 0 评论 -
HDU 2147 kiki's game
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=2147题目大意:n*m的棋盘,一个硬币在右下角,每次只能向左、上、左上移动一次,无法操作者输。分析: 游戏最终状态必定为(n,1),则可以从最终态逆向推就可以了(这段在草稿纸上完成)。最后可以发现n,m同时为奇数时为必败点。代码:#include i原创 2013-06-13 20:47:58 · 470 阅读 · 0 评论 -
HDU 1847 Good Luck in CET-4 Everybody!
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1847题目大意:中文题目不解释分析: 根据必胜点和必败点的定义就可以很好地做掉这个题了。做个必胜点和必败点的标记就行了。没有标记过的点为必败点,从必败点一步到达的点都标记为必胜点。代码#include using namespace std;in原创 2013-06-03 11:39:07 · 424 阅读 · 0 评论 -
HDU 1846 Brave Game
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1846题意:中文题目不解释。分析:最简答的博弈了吧……必败点是n%(m+1)==0……代码:#include int main(){ int t,n,m; scanf("%d",&t); while(t--) { scanf("%d%d原创 2013-06-03 11:33:25 · 348 阅读 · 0 评论 -
HDU1564 Play a game
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1564题目大意:在n*n的棋盘的一角放着一个石子,轮流对石子进行操作:移动到水平或竖直相邻的没有到达过的格子。不能操作的人输。分析:胜败条件只与n的奇偶性有关。可以打表证明。代码: #include int main(){ int a;原创 2013-05-29 17:11:10 · 444 阅读 · 0 评论 -
HDU 1079 Calendar Game
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1079。题目大意:给定一个日期,两个人轮流对这个日期进行加一天或者加一个月的操作,当然操作之后的日期必须是合法的。谁让日期到达2001.11.4,谁获胜,超过这一天算负。求先手是否有必胜的策略。分析: 因为是对月或日进行加1,而每次操作会改变的是它们两个和的奇偶性。从这方面考虑的原创 2013-04-22 19:37:42 · 418 阅读 · 0 评论 -
HDU1525 Euclid's Game
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1525题目大意:Stan和Ollie轮流对两个数进行如下操作:大数减去小数的X倍(X>0且结果不可产生负数)让求谁先产生0;分析:谁先面临多种选择则谁就获胜。代码:#include #include #include #include using n原创 2013-04-22 19:54:02 · 517 阅读 · 0 评论 -
博弈论(一):Nim游戏
重点结论:对于一个Nim游戏的局面(a1,a2,...,an),它是P-position当且仅当a1^a2^...^an=0,其中^表示位异或(xor)运算。Nim游戏是博弈论中最经典的模型(之一?),它又有着十分简单的规则和无比优美的结论,由这个游戏开始了解博弈论恐怕是最合适不过了。Nim游戏是组合游戏(Combinatorial Games)的一种,准确来说,属于“Impartia转载 2013-02-26 15:01:03 · 289 阅读 · 0 评论 -
HDU4778 Gems Fight!
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=4778题目大意:有B个包裹,里面有各种颜色的GEM,共有G个颜色。Alice和Bob轮流挑选包裹放到一个地方,如果挑选出来的同种颜色的GEM超过S个,当前回合者可以得分,每超过S个得一分。如果在回合内得分了,可以额外进行一个回合。问Alice的得分减去Bob的得分最大是多少。分析:很明显的极大极小原创 2013-11-09 18:36:34 · 733 阅读 · 0 评论