码迷,mamicode.com
首页 > 其他好文 > 详细

【bzoj2463】 谁能赢呢?

时间:2016-09-27 20:24:32      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:

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】 谁能赢呢?

标签:

原文地址:http://www.cnblogs.com/MashiroSky/p/5914044.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!