bzoj2463 谁能赢呢?
Posted MashiroSky
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bzoj2463 谁能赢呢?相关的知识,希望对你有一定的参考价值。
www.lydsy.com/JudgeOnline/problem.php?id=2463 (题目链接)
题意:一个n*n的棋盘,开始时左上角有一个棋子,每次可以把棋子向4个方向移动,但不能移动到曾经走过的格子上,无法移动者输,问是否存在先手必胜策略。
Solution
手玩了一下n<=4的情况,发现当n是偶数时就有必胜策略,交上去果然AC。。然而不会证明,于是翻了下别人的题解。
当n为偶数时,可以被2*1的骨牌完全覆盖,所以每次都走骨牌的另一端,而另一个
人只能走新的骨牌,直到没有为止
当n为奇数时,去掉第一个格子后可以被2*1的骨牌完全覆盖,所以胜负反过来了
很有道理阿有木有。
代码:
// bzoj2463 #include<algorithm> #include<iostream> #include<cstdlib> #include<cstring> #include<cstdio> #include<cmath> #define LL long long #define inf 2147483640 #define Pi acos(-1.0) #define free(a) freopen(a".in","r",stdin),freopen(a".out","w",stdout); using namespace std; int main() { int n; while (scanf("%d",&n)!=EOF && n) { if (n&1) printf("Bob\n"); else printf("Alice\n"); } return 0; }
以上是关于bzoj2463 谁能赢呢?的主要内容,如果未能解决你的问题,请参考以下文章