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 ]
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; }