洛谷P1488 肥猫的游戏 题解 博弈论入门
题目链接:https://www.luogu.org/problem/P1488
其实这道题目我只需要 \(n\) 以及黑色三角形的三个端点编号就可以了。
我们假设在一个 \(n\) 边形中,黑色三角形的端点号分别是 \(a_0, a_1, a_2\) ,且 \(a_0 \lt a_1 \lt a_2\) ,那我其实可以知道:
- \(a_0 - a_1\) 边外围的三角形个数是 \(b_0 = a_1 - a_0 - 1\) ;
- \(a_1 - a_2\) 边外围的三角形个数是 \(b_1 = a_2 - a_1 - 1\) ;
- \(a_2 - a_0\) 边外围的三角形个数是 \(b_2 = a_0 + n - a_2 - 1\) 。
然后我们来思考一下:
如果一开始黑色三角形就有两条边裸露在外面(即存在两个 \(b_i = 0\)),则直接判定先手赢;
否则,因为大家都是绝对聪明的,所以除非万不得已,绝对不会让黑色三角形的边裸露出来,那么总共会取 \(b_0+b_1+b_2-1\) 轮,此时的状态是黑色三角形有两边裸露,另一边紧贴着仅剩下的一个白色三角形,而下一步执行的人获胜。
那么这个时候只需要判断 \(b_0+b_1+b_2\) 是偶数,则先手赢;是奇数,则后手赢。
实现代码如下:
#include <bits/stdc++.h>
using namespace std;
int n, a[3], b[3];
bool win;
int main() {
cin >> n; for (int i = 0; i < 3; i ++) cin >> a[i];
sort(a, a+3);
b[0] = a[1] - a[0] - 1;
b[1] = a[2] - a[1] - 1;
b[2] = a[0] + n - a[2] - 1;
sort(b, b+3);
if (b[1] == 0) win = true;
else win = ( (b[0] + b[1] + b[2] - 1) % 2 == 0 );
puts( win ? "JMcat Win" : "PZ Win" );
return 0;
}
洛谷P1488 肥猫的游戏 题解 博弈论入门的更多相关文章
- 洛谷P1288 取数游戏II[博弈论]
题目描述 有一个取数的游戏.初始时,给出一个环,环上的每条边上都有一个非负整数.这些整数中至少有一个0.然后,将一枚硬币放在环上的一个节点上.两个玩家就是以这个放硬币的节点为起点开始这个游戏,两人轮流 ...
- 洛谷P1123取数游戏题解
题目 这是一道简单的搜索题,考查的还是比较基础的东西,其时搜索有时候并不难写,主要是要想到怎么搜.比如这个题,如果想二维四个方向搜则没有头绪,反之因为搜索是用递归实现的,所以我们可以使用递归的特性,把 ...
- BZOJ5323 & 洛谷4562:[JXOI2018]游戏——题解
https://www.luogu.org/problemnew/show/P4562 https://www.lydsy.com/JudgeOnline/problem.php?id=5323 (B ...
- 洛谷P1129 [ZJOI2007]矩阵游戏 题解
题目链接:https://www.luogu.org/problemnew/show/P1129 分析: 这道题不是很好想,但只要想的出来,代码不成问题. 思路1 举几个例子,我们发现, 对于任何数来 ...
- 洛谷P1640 [SCOI2010]连续攻击游戏 题解
题目链接: https://www.luogu.org/problemnew/show/P1640 分析: 这道题用二分图来解决即可.应该可以作为网络流中的模板题来食用, 每一个武器有两个属性,但是只 ...
- 洛谷P1028 数的计算 题解 动态规划入门题
题目链接:https://www.luogu.com.cn/problem/P1028 题目描述 我们要求找出具有下列性质数的个数(包含输入的自然数 \(n\) ): 先输入一个自然数 \(n(n \ ...
- luogu P1488 肥猫的游戏
肥猫的游戏 P1488 肥猫的游戏 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目描述 野猫与胖子,合起来简称肥猫,是一个班的同学,他们也都是数学高手,所以经常在一起讨论数学问 ...
- 洛谷P1783 海滩防御 分析+题解代码
洛谷P1783 海滩防御 分析+题解代码 题目描述: WLP同学最近迷上了一款网络联机对战游戏(终于知道为毛JOHNKRAM每天刷洛谷效率那么低了),但是他却为了这个游戏很苦恼,因为他在海边的造船厂和 ...
- 洛谷P1274-魔术数字游戏
Problem 洛谷P1274-魔术数字游戏 Accept: 118 Submit: 243Time Limit: 1000 mSec Memory Limit : 128MB Probl ...
随机推荐
- linux常用目录介绍
bin:全称binary,含义是二进制,该目录中存放的都是一些二进制文件,这些文件都是可以被运行的. dev:该目录主要存放的是外接设备,例如:光盘等.注意:在其中的设备是不能被直接使用的,需要挂载( ...
- webpack 4.X 创建 react项目
1. 新建一个文件夹2. 运行 npm init -y 快速初始化项目3. 在跟目录创建src文件夹 dist文件夹4. 在src下创建 index.html main.js // index.htm ...
- Js 克隆
1.浅表克隆 调用concate() 或者slice() 方法,可以创建数组的浅表副本,在浅表副本中,如果原始数组的元素是复杂数据类型,则元素值指向对象的引用而非对象本身, 与原始数组一样,浅表副本的 ...
- 【每日一linux命令7】用户及用户组
一.查询用户及用户组相关命令 1.whoami 查询当前登录的用户名 2.groups 查询当前登录用户名所在的用户组 3.groups root 查询root用户名所在的用户组 二.怎么批量查看用户 ...
- CSS Tools: Reset CSS
样式初始化 /* http://meyerweb.com/eric/tools/css/reset/ v2.0 | 20110126 License: none (public domain) */ ...
- 【JZOJ3624】【SDOI2014】数数(count) AC自动机+数位dp
题面 100 容易想到使用AC自动机来处理禁忌子串的问题: 然后在自动机上数位dp,具体是: \(f_{i,j,0/1}\)表示填了\(i\)位,当前在自动机的第\(j\)个结点上,\(0\)表示当前 ...
- SQL中null比较的雷区
SQL中遇到null要格外小心! oracle最坑: oracle中在可为null的字段上做逻辑关系运算要格外小心,如 <>,>,=,<,任何与null的运算结果都返回fals ...
- Java.控制层.响应工具类.
Java.控制层.响应工具类. package cn.com.spdbccc.cds.index.web.base; public class ApiResponse { private int co ...
- 【arduino】anroid的app与arduino的ch05,进行蓝牙通信遇到的问题
Arduino程序上传不成功 显示系统找不到指定文件 错误信息显示是 avrdude: ser_open(): can't open device "\\.\COM1": 系统找不 ...
- 使用 Swift 构建自定义的ActivityIndicator View
目前在自己的个人项目里,已经开始使用Swift去编写代码.这篇文章把项目中自己设计的一个ActivityIndicator View展示给大家. 在开始之前,我们先看看最终的效果,如下图: 我建议大家 ...