2463: [中山市选2009]谁能赢呢?

来源:互联网 发布:东四命与西四命算法 编辑:程序博客网 时间:2024/04/29 15:40

2463: [中山市选2009]谁能赢呢?

Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 1805  Solved: 1333
[Submit][Status][Discuss]

Description

小明和小红经常玩一个博弈游戏。给定一个n×n的棋盘,一个石头被放在棋盘的左上角。他们轮流移动石头。每一回合,选手只能把石头向上,下,左,右四个方向移动一格,并且要求移动到的格子之前不能被访问过。谁不能移动石头了就算输。假如小明先移动石头,而且两个选手都以最优策略走步,问最后谁能赢?

Input

    输入文件有多组数据。
    输入第一行包含一个整数n,表示棋盘的规模。
    当输入n为0时,表示输入结束。
 

Output

对于每组数据,如果小明最后能赢,则输出”Alice”, 否则输出”Bob”, 每一组答案独占一行。

Sample Input

2
0

Sample Output

Alice

HINT

对于所有的数据,保证1<=n<=10000。

Source

[Submit][Status][Discuss]

n = 2时,,样例告诉我们Alice必胜
n = 3时,不难尝试出Bob必胜--
那就有个大胆的猜想,,,分奇偶即可??
没错是对的。。。
n为偶数的时候,整个网格可以由一堆1*2或2*1的骨牌覆盖,
两个人的操作就可以看做这些覆盖,,那么每次顺着骨牌走就行了
n如果是奇数,,去掉起点以后恰好也能由这些骨牌覆盖,,因此胜负转置
#include<iostream>#include<cstdio>#include<algorithm>#include<cmath>#include<cstring>#include<vector>#include<queue>#include<set>#include<map>#include<stack>#include<bitset>#include<ext/pb_ds/priority_queue.hpp>using namespace std;int main(){#ifdef DMCfreopen("DMC.txt","r",stdin);#endiffor (;;){int n; scanf("%d",&n);if (!n) break;if (n&1) puts("Bob"); else puts("Alice");}return 0;}

0 0