洛谷P3150 pb的游戏(1)题解 博弈论入门
2024-09-07 22:43:27
题目链接:https://www.luogu.org/problem/P3150
这道题目是博弈论的入门题。
我们以 必胜态 和 必败态 来讲解这个问题。
首先,下面的图片演示了前8个数的必胜态和必败态:
可以发现:
- 当 \(m=1,3,5,7\) 的时候都是必败态;
- 当 \(m=2,4,6,8\) 的时候都是必胜态。
我们不妨用数学归纳法来证明一下:
对于任意一个大于8的 \(m\) ,假设我已知它前面的 \(m-1\) 个数的状态已经确定,并且奇数都是必败态,偶数都是必胜态。则:
- 如果 \(m\) 是奇数,则它无论如何分,都是分成一个小于 \(m\) 的奇数和一个小于 \(m\) 的偶数,也就是无论如何分都会留给对手一个必胜态(偶数),则 \(m\) 对我就是必败态;
- 如果 \(m\) 是偶数,则它可以分成两个奇数(此时留给对手两个必败态),也可以分成两个偶数(此时留给对手两个必胜态),然而因为我绝对聪明,所以我肯定会分成两个奇数,所以此时 \(m\) 对我就是必胜态。
综上所述,可以得到结论:所有的偶数都是必胜态,所有的奇数都是必败态。
实现代码如下:
#include <bits/stdc++.h>
using namespace std;
int n, m;
int main() {
cin >> n;
while (n --) {
cin >> m;
puts( m % 2 ? "zs wins" : "pb wins");
}
return 0;
}
最新文章
- 由Memcached升级到 Couchbase的 Java 客户端的过程记录(一)
- Ubuntu 14.04 (Trusty Tahr) LTS发布,附下载地址,各种镜像【bubuko.com】
- CentOS6.4 内核优化
- hdu----(1466)计算直线的交点数(dp)
- Linux双网卡绑定和解除绑定的实现
- jgs--多线程和synchronized
- 热门开源项目:Guns-后台管理系统
- 关于asp.net web form 和 asp.net mvc 的区别
- 安装linux下面用来配置网络,防火墙,系统服务等设置的图形小工具Setup
- Struts 2 之类型转换器
- 【ShaderToy】画一个球体
- 实现promise
- ef 增加或者更新的习惯思维
- Python connect mariadb(Python连接mysql)
- YQCB冲刺第二周绩效评价
- 二、hbase shell工具
- WPF的菜单栏,工具栏的简单使用
- [Leetcode]015. 3Sum
- 剑指Offer(书):链表中环的入口节点
- Linux下Qt5.6 Fcitx无法输入中文输入解决办法
热门文章
- SpringMVC返回json的问题
- HR招聘_(七)_招聘方法论(面试环节&#183;动机判断)
- Total Number of Unicorn Companies: 188
- C++ std::vector指定位置插入
- ORACLE 使用笔记
- 【C/C++多线程编程之七】pthread信号量
- iOS - CAReplicatorLayer 的运用
- 怎么用PHP+sqlite3验证登录用户名和密码
- Intellij:用Intellij出的Gradle插件进行开发
- Hdu 1007 最近点对