题目链接:https://www.luogu.org/problem/P4136

找规律

首先这道题目我没有什么思路,所以一开始想到的是通过搜索来枚举 \(n\) 比较小的时候的情况。

所以我开搜索枚举了 \(n \le 8\) 的所有情况。

搜索代码:

#include <bits/stdc++.h>
using namespace std;
const int maxn = 11;
int n;
bool vis[maxn][maxn], res[maxn][maxn];
int dir[4][2] = { -1, 0, 1, 0, 0, -1, 0, 1 };
inline bool in_map(int x, int y) { return x >= 0 && x < n && y >= 0 && y < n; }
bool dfs(int x, int y) {
vis[x][y] = true;
res[x][y] = false;
bool flag = false;
for (int i = 0; i < 4; i ++) {
int xx = x + dir[i][0], yy = y + dir[i][1];
if (!in_map(xx, yy) || vis[xx][yy]) continue;
dfs(xx, yy);
if (!res[xx][yy]) {
res[x][y] = true;
break;
}
}
vis[x][y] = false;
}
void check() {
printf("check (%d) : ", n);
memset(vis, 0, sizeof(vis));
memset(res, 0, sizeof(res));
dfs(0, 0);
puts(res[0][0] ? "YES" : "NO");
}
int main() {
for (n = 1; n <= 8; n ++) check();
return 0;
}

输出结果是:

check (1) : NO
check (2) : YES
check (3) : NO
check (4) : YES
check (5) : NO
check (6) : YES
check (7) : NO
check (8) : YES

所以,可以发现:当 \(n\) 为偶数时,先手胜,当 \(n\) 为奇数时,后手胜。

然后这道题目就这样通过 找规律 找到了一个假想的规律。

然后就AC了:

#include <bits/stdc++.h>
using namespace std;
int n;
int main() {
while ( (cin >> n) && n ) {
puts( (n % 2 == 0) ? "Alice" : "Bob" );
}
return 0;
}

然后证明转自 Shallowy大神的博客

想象一下,可以 把整个棋盘拆成若干个1*2的格子 ,那么,

很明显,后手只是从一个小格子的一侧走到了另一侧;

而先手则找到了一个新的格子。

因为后手只需走,但先手要找,所以在某个时刻游戏结束时,一定是先手找不到格子了...

当n为偶数时,棋盘能完美地被拆掉——可是先手会找不到;当n为奇数时,先手才能赢。

洛谷P4136 谁能赢呢? 题解 博弈论的更多相关文章

  1. 洛谷 P4136 谁能赢呢?

    P4136 谁能赢呢? 题目描述 小明和小红经常玩一个博弈游戏.给定一个n×n的棋盘,一个石头被放在棋盘的左上角.他们轮流移动石头.每一回合,选手只能把石头向上,下,左,右四个方向移动一格,并且要求移 ...

  2. 洛谷P4136 谁能赢呢?

    题目描述 小明和小红经常玩一个博弈游戏.给定一个n×n的棋盘,一个石头被放在棋盘的左上角.他们轮流移动石头.每一回合,选手只能把石头向上,下,左,右四个方向移动一格,并且要求移动到的格子之前不能被访问 ...

  3. 洛谷P4136 谁能赢呢?——博弈

    题目:https://www.luogu.org/problemnew/show/P4136 每个人有足够聪明,一定会把图走满: 所以n为偶数先手胜,n为奇数后手胜. 代码如下: #include&l ...

  4. 洛谷P1288 取数游戏II 题解 博弈论

    题目链接:https://www.luogu.org/problem/P1288 首先,如果你的一边的边是 \(0\) ,那么你肯定走另一边. 那么你走另一边绝对不能让这条边有剩余,因为这条边有剩余的 ...

  5. 洛谷P1854 花店橱窗布置 分析+题解代码

    洛谷P1854 花店橱窗布置 分析+题解代码 蒟蒻的第一道提高+/省选-,纪念一下. 题目描述: 某花店现有F束花,每一束花的品种都不一样,同时至少有同样数量的花瓶,被按顺序摆成一行,花瓶的位置是固定 ...

  6. HAOI2006 (洛谷P2341)受欢迎的牛 题解

    HAOI2006 (洛谷P2341)受欢迎的牛 题解 题目描述 友情链接原题 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就是一头明星奶牛.所有奶 牛都是自恋狂,每头奶牛总是喜欢自己的.奶牛之 ...

  7. 洛谷P3412 仓鼠找$Sugar\ II$题解(期望+统计论?)

    洛谷P3412 仓鼠找\(Sugar\ II\)题解(期望+统计论?) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1327573 原题链接:洛谷P3412 ...

  8. 洛谷P3502 [POI2010]CHO-Hamsters感想及题解(图论+字符串+矩阵加速$dp\&Floyd$)

    洛谷P3502 [POI2010]CHO-Hamsters感想及题解(图论+字符串+矩阵加速\(dp\&Floyd\)) 标签:题解 阅读体验:https://zybuluo.com/Junl ...

  9. BZOJ4946 & 洛谷3826 & UOJ318:[NOI2017]蔬菜——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=4946 https://www.luogu.org/problemnew/show/P3826 ht ...

随机推荐

  1. 洛谷P1569属牛的抗议 超级强力无敌弱化版

    P1569 [USACO11FEB]属牛的抗议Generic Cow Prote- 题目描述 约翰家的N头奶牛聚集在一起,排成一列,正在进行一项抗议活动.第i头奶牛的理智度 为Ai,Ai可能是负数.约 ...

  2. SVN客户端操作(clean up|commit|update)系统找不到指定的文件

    前天电脑中毒,更新SVN的时候,发现以下错误: Can't open file 'XXXXX\.svn\pristine\7a\7ab8cc591cd8b0425a0e6331cc52756d15ba ...

  3. Codeforces 113B

    题目链接 B. Petr# time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...

  4. C# event 和delegate的区别

    其实说实话 event和delegate 并没有什么特别大的区别,event其实就是特殊化的delegate 1.调用上event只能+=和-=,这样做的意义是为了防止,其余的方法覆盖,但是deleg ...

  5. $.inArray()方法

    $.inArray() 函数用于在数组中查找指定值,并返回它的索引值(如果没有找到,则返回-1) 提示:源数组不会受到影响,过滤结果只反映在返回的结果数组中. 语法 $.inArray( value, ...

  6. Notepad++搜索中的正则应用

    假设要查找文件中所有tppabs="*****" 类型的代码 tppabs="http://www.******.com/templates/Alen/Css/Main. ...

  7. 云数据库将进入企业级百万IOPS时代

    IOPS (Input/Output Operations Per Second),即每秒进行读写(I/O)操作的次数,以衡量存储每秒可接受多少次主机发出的访问.数据库,特别是关系型数据库由于需要处理 ...

  8. 全球首个百万IOPS云盘即将商业化 阿里云推出超高性能云盘ESSD

    近日,在经过近半年的上线公测后,阿里云全球首个跨入IOPS百万时代的云盘——ESSD即将迎来商业化,单盘IOPS高达100万,这是阿里云迄今为止性能最强的企业级块存储服务. 搭配ECS云服务器使用, ...

  9. POJ 1679The Unique MST

    Description Given a connected undirected graph, tell if its minimum spanning tree is unique. Definit ...

  10. bzoj1834 网络扩容

    Description 给定一张有向图,每条边都有一个容量C和一个扩容费用W.这里扩容费用是指将容量扩大1所需的费用.求: 1. 在不扩容的情况下,1到N的最大流: 2. 将1到N的最大流增加K所需的 ...