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

Posted ^m

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BZOJ2463 [中山市选2009] 谁能赢呢?相关的知识,希望对你有一定的参考价值。

题意:给定n,n×n的棋盘,一个石头放在左上角,两个人轮流移动石头,每次把石头向上,下,左,右四个方向移动一格,要求移动到的格子之前不能被访问过,不能移动石头就算输,两人都用最优策略,问先手胜还是后手胜。

https://www.lydsy.com/JudgeOnline/problem.php?id=2463

首先对于n是偶数,先手胜;n是奇数,后手胜

用1*2骨牌覆盖棋盘。

n为偶数时一定可以覆盖,每次先手走前一步所在骨牌另一端,先手必胜。

n为奇数时去掉左上角第一格一定能被骨牌覆盖,但是先手从左上角走,必须走到一个没有走过的骨牌内,每次后手走前一步所在骨牌另一端,后手必胜。

技术分享图片
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 #include<cmath>
 5 #include<cstring>
 6 #include<vector>
 7  
 8 using namespace std;
 9 
10 template <typename tn> void read (tn & a) {
11     tn x = 0, f = 1;
12     char c = getchar();
13     while (c < 0 || c > 9){ if (c == -) f = -1; c = getchar(); }
14     while (c >= 0 && c <= 9){ x = x * 10 + c - 0; c = getchar(); }
15     a = f == 1 ? x : -x;
16 }
17 
18 int main() {
19     int n;
20     read(n);
21     while (n) {
22         if (n % 2 == 0) {
23             printf("Alice\n");
24         }
25         else {
26             printf("Bob\n");
27         }
28         read(n);
29     }
30     return 0;
31 } 
View Code

 

以上是关于BZOJ2463 [中山市选2009] 谁能赢呢?的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

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

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

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