51Nod 1070 Bash游戏 V4(斐波那契博弈)
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1070 题意: 思路: 这个是斐波那契博弈, http://blog.csdn.net/acm_cxlove/article/details/7835016 ,关于斐波那契博弈的介绍,可以看看这篇博客。以下的内容便是转自这篇博客。 1、当i=2时,先手只能取1颗,显然必败,结论成立。 2、假设当i<=k时,结论成立。 则当i=k+1时,f[i] = f[k]+f[k-1]。 则我们可以把这一堆石子看成两堆,简称k堆和k-1堆。 (一定可以看成两堆,因为假如先手第一次取的石子数大于或等于f[k-1],则后手可以直接取完f[k],因为f[k] < 2*f[k-1]) 对于k-1堆,由假设可知,不论先手怎样取,后手总能取到最后一颗。下面我们分析一下后手最后取的石子数x的情况。 如果先手第一次取的石子数y>=f[k-1]/3,则这小堆所剩的石子数小于2y,即后手可以直接取完,此时x=f[k-1]-y,则x<=2/3*f[k-1]。 我们来比较一下2/3*f[k-1]与1/2*f[k]的大小。即4*f[k-1]与3*f[k]的大小,由数学归纳法不难得出,后者大。 所以我们得到,x<1/2*f[k]。 即后手取完k-1堆后,先手不能一下取完k堆,所以游戏规则没有改变