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

奇偶即可判断输赢

#include<cstdio>
#include<cctype>
int read(){
    int x=0;char c=getchar();
    while(!isdigit(c)) c=getchar();
    while(isdigit(c)) x=x*10+c-‘0‘,c=getchar();
    return x;
}
int main(){
    int n;
    while(n=read()) {
        n%2?printf("Bob\n"):printf("Alice\n");
    }
    return 0;
}

  

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

Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 1708  Solved: 1270
[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]

时间: 2024-11-20 15:57:13

bzoj2463: [中山市选2009]谁能赢呢?的相关文章

bzoj千题计划169:bzoj2463: [中山市选2009]谁能赢呢?

http://www.lydsy.com/JudgeOnline/problem.php?id=2463 n为偶数时,一定可以被若干个1*2 矩形覆盖 先手每次从矩形的一端走向另一端,后手每次走向一个新的矩形 所以先手必胜 n为奇数时,先手走完一步后,剩下同n为偶数 所以先手必败 #include<cstdio> using namespace std; int main() { int n; while(scanf("%d",&n)!=EOF) { if(!n)

bzoj2463: [中山市选2009]谁能赢呢?(博弈论)

2463: [中山市选2009]谁能赢呢? 题目:传送门 题解: 水体! n为偶数的话必能被1*2的矩形覆盖,那么因为一开始在左上角,所以先手一定可以先组成一个矩形,那么先手肯定必胜! n为奇数和上面相反,先手必输 代码: 1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 int main() 5 { 6 int n; 7 while(scanf("%d",&n)!=EOF)

bzoj2463: [中山市选2009]谁能赢呢? 博弈

小明和小红经常玩一个博弈游戏.给定一个n×n的棋盘,一个石头被放在棋盘的左上角.他们轮流移动石头.每一回合,选手只能把石头向上,下,左,右四个方向移动一格,并且要求移动到的格子之前不能被访问过.谁不能移动石头了就算输.假如小明先移动石头,而且两个选手都以最优策略走步,问最后谁能赢? Input 输入文件有多组数据. 输入第一行包含一个整数n,表示棋盘的规模. 当输入n为0时,表示输入结束. Output 对于每组数据,如果小明最后能赢,则输出"Alice", 否则输出"Bob

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

2463: [中山市选2009]谁能赢呢? Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 830  Solved: 586[Submit][Status] Description 小明和小红经常玩一个博弈游戏.给定一个n×n的棋盘,一个石头被放在棋盘的左上角.他们轮流移动石头.每一回合,选手只能把石头向上,下,左,右四个方向移动一格,并且要求移动到的格子之前不能被访问过.谁不能移动石头了就算输.假如小明先移动石头,而且两个选手都以最优策略走步,问

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

明和小红经常玩一个博弈游戏.给定一个n×n的棋盘,一个石头被放在棋盘的左上角.他们轮流移动石头.每一回合,选手只能把石头向上,下,左,右四个方向移动一格,并且要求移动到的格子之前不能被访问过.谁不能移动石头了就算输.假如小明先移动石头,而且两个选手都以最优策略走步,问最后谁能赢? 法1:打表瞎猜,奇负偶胜 法2:看别人题解 http://www.cnblogs.com/iwtwiioi/p/4161161.html 首先对于n是偶数,一定能被1*2的骨牌覆盖!所以从起点开始,先手一定走的是骨牌的

【BZOJ】2463: [中山市选2009]谁能赢呢?(博弈论)

http://www.lydsy.com/JudgeOnline/problem.php?id=2463 好神的证明! 首先对于n是偶数,一定能被1*2的骨牌覆盖!所以从起点开始,先手一定走的是骨牌的另一端,后手一定走的是骨牌的前一端,因此无论何时,先手总是可以走.因此先手必胜. 如果n是奇数,那么去掉一格后一定能被1*2的骨牌覆盖,但是先手从左上角走,就进入了这个S态(必胜态),那么和上边的分析一样了,因此先手必败. 然后就是水题.. #include <cstdio> #include &

中山市选2009 谁能赢呢?

题目: 小明和小红经常玩一个博弈游戏.给定一个n×n的棋盘,一个石头被放在棋盘的左上角.他们轮流移动石头.每一回合,选手只能把石头向上,下,左,右四个方向移动一格,并且要求移动到的格子之前不能被访问过.谁不能移动石头了就算输.假如小明先移动石头,而且两个选手都以最优策略走步,问最后谁能赢? 思路: 根据题意可知最后的胜负其实就是两人共走的步数的奇偶. 必胜的人只要一直转回形圈就行了,必败的人即使改变方向也不能影响步数的奇偶. 所以只用判断n的奇偶就行了. 代码: #include <bits/s

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

我曹,以为是什么什么SG函数,什么神奇的博弈论,我曹,不会啊(雾) 看了一眼题解,短小,直接关掉开始写奇偶.233 1 #include<bits/stdc++.h> 2 #define N 100005 3 #define LL long long 4 #define inf 0x3f3f3f3f 5 #define ls tr[x][0] 6 #define rs tr[x][1] 7 using namespace std; 8 inline int ra() 9 { 10 int x=

[BZOJ - 2463] [中山市选2009] 谁能赢呢?【“博弈论”】

题目链接:BZOJ - 2463 题目分析 这道题的题解是,由于两人都采取最优策略,所以最后一定所有格子都会被走到.(Why..表示不懂..哪位神犇可以给我讲一下QAQ) 于是..就变成了判断 n*n 的奇偶性,也就是判断 n 的奇偶性.. 代码 #include <cstdio> using namespace std; int main() { int n; while (true) { scanf("%d", &n); if (n == 0) break; i