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

Description

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

Solution

容易发现:如果\(n\)是偶数,那么先手只要不往回走就是必胜,\(n\)是奇数则后手必胜.

#include <iostream>
#include <cstdio>
#define RG register
#define il inline
#define iter iterator
#define Max(a,b) ((a)>(b)?(a):(b))
#define Min(a,b) ((a)<(b)?(a):(b))
using namespace std;
typedef long long ll;
int n;
void work()
{
	if(!n)return ;
	if(n%2==0)puts("Alice");
	else puts("Bob");
}

int main()
{
	freopen("pp.in","r",stdin);
	freopen("pp.out","w",stdout);
	while(~scanf("%d",&n))work();
	return 0;
}

posted @ 2017-12-30 14:29  PIPIBoss  阅读(95)  评论(1编辑  收藏  举报