1461.致命游戏 (博弈)

1461.致命游戏
http://acm.xmu.edu.cn/JudgeOnline/problem.php?id=1461
Time Limit: 3000 MS         Memory Limit: 65536 K 
Total Submissions: 84 (53 users)         Accepted: 35 (35 users) 
[ My Solution ]

 

Description

        程序员Alice和Bob摊上大事了,被判了死刑。恰巧这天遇上“网宿科技杯”厦门大学第四届程序设计积分赛,于是主办方决定大赦其中一个人的刑罚。
        主办方开发了一个游戏:有一个n*m大小的矩形格子阵列,左下角为(1, 1)格子,放了瓶毒药。Alice和Bob依次选择一个格子(x0, y0),挖去所有(x, y)格子,其中x和y满足x>=x0并且y>=y0,最终拿到毒药的人判处死刑。一个例子如图所示,初始状态是一个3*8的矩形格子阵列,Alice首先选择了(2,6)点,Bob选择了(3,2)点变成如下状态。


         假设Alice和Bob都是绝顶聪明的,那么,请问谁能够活下来?

 

 

Input

输入只有一行,为两个整数n, m. 其中1<= n, m <= 1024.

 

 

Output

若Alice存活,则输出Alice;否则输出Bob

 

 

Sample Input

999 999

 

 

Sample Output

Alice

 

 

Hint

Alice一开始选择(2, 2)点,则图形变成两条边相等的L型,那么此时,Bob在一条边上做任意举动,Alice则在另一条边上做相同的举动,则最后拿到毒药的一定是Bob。

 

 

Source
dumpling @xmu @UCAS
 
#include<iostream>
#include<cstdio>

using namespace std;

int n,m;

int main(){

    //freopen("input.txt","r",stdin);

    while(~scanf("%d%d",&n,&m)){
        if(n<m){
            int tmp=n;n=m;m=tmp;
        }
        if(n==1 && m==1)
            printf("Bob\n");
        else if(n==2 && m==1)
            printf("Alice\n");
        else if(n==m || (n-2)!=(m-2))
            printf("Alice\n");
    }
    return 0;
}

 

posted @ 2013-05-04 19:35  Jack Ge  阅读(314)  评论(0编辑  收藏  举报