首页 > 其他 > 详细

51nod 1070 Bash游戏 V4

时间:2020-04-24 13:04:39      阅读:53      评论:0      收藏:0      [点我收藏+]

题意:

有n个石子,先手第一次不能全部取完,a和b轮流操作且每个人取的石子树不超过上一个人取的两倍,谁赢?

知识点:

博弈论,斐波那契博弈

解法:

这是斐波那契博弈的模板题,打表发现当n为斐波那契数的时候b赢,否则a赢。

考虑证明:

假如一个数是斐波那契数,那么它可以写成更小的两个斐波那契数的和,那先手肯定不能将小的那堆取完(取完的话后手可以拿掉大的那一堆,因为斐波那契数列满足下一项小于当前项的两倍)。取一部分的话,后手就把剩下的取掉,仍然留下一个斐波那契数给先手,所以先手必败。

如果不是斐波那契数,由“齐肯多夫定理”(Zeckendorf)可得,每个正整数都可以分解成若干个不连续不同的斐波那契数的和,那么先手第一次取掉最小的那个斐波那契数,因为不连续,所以下一个肯定比当前的两倍要大,所以后手取不完,先手把剩下的那些取了,那么先手必胜。

证毕。

51nod 1070 Bash游戏 V4

原文:https://www.cnblogs.com/Ronald-MOK1426/p/12766309.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!