P1288 取数游戏II
最近刚学了博弈论,拿来练练手qwq
其实和数值的大小并没有关系
我们用N/P态来表示必胜/必败状态
先在草稿纸上探究硬币♦在最左侧(其实左右侧是等价的)的一条长链的N/P态,设链长为n
我们用1代替其他所有非0数
n=2: ♦1 N态
n=3: ♦11 P态
......
我们发现,当n为奇数时,则为P态,反之为N态。
于是我们就找到了硬币在最左侧时的答案。
但是,实际上硬币并不一定在最左侧
此时我们只需要分别判断硬币左边的链和硬币右边的链,只要有一种为N态,则Alice赢,反之Bob赢(双方都会选择最优走法)。
代码如下:
#include<iostream>
#include<cstdio>
using namespace std;
int a[],n,l=,r=; //记得要算上硬币所在的点
int main()
{
scanf("%d",&n);
for(int i=;i<=n;++i) scanf("%d",&a[i]),a[n+i]=a[i];
for(int i=n;a[i];--i) ++l; //左侧判断
for(int i=n+;a[i];++i) ++r; //右侧判断
if((l&)&&(r&)) printf("NO"); //任何一个为奇数则Alice赢
else printf("YES");
return ;
}
P1288 取数游戏II的更多相关文章
- 洛谷P1288 取数游戏II(博弈)
洛谷P1288 取数游戏II 先手必胜的条件需要满足如下中至少 \(1\) 条: 从初始位置向左走到第一个 \(0\) 的位置,经过边的数目为偶数(包含 \(0\) 这条边). 从初始位置向右走到第一 ...
- 洛谷P1288 取数游戏II[博弈论]
题目描述 有一个取数的游戏.初始时,给出一个环,环上的每条边上都有一个非负整数.这些整数中至少有一个0.然后,将一枚硬币放在环上的一个节点上.两个玩家就是以这个放硬币的节点为起点开始这个游戏,两人轮流 ...
- 洛谷P1288 取数游戏II
题目描述 有一个取数的游戏.初始时,给出一个环,环上的每条边上都有一个非负整数.这些整数中至少有一个0.然后,将一枚硬币放在环上的一个节点上.两个玩家就是以这个放硬币的节点为起点开始这个游戏,两人轮流 ...
- 洛谷P1288 取数游戏II 题解 博弈论
题目链接:https://www.luogu.org/problem/P1288 首先,如果你的一边的边是 \(0\) ,那么你肯定走另一边. 那么你走另一边绝对不能让这条边有剩余,因为这条边有剩余的 ...
- 【洛谷】P1288 取数游戏II
题目链接:https://www.luogu.org/problemnew/show/P1288 题意:中文题面不赘述啦. 题解:代码很好写,其实就是判断边数是否为偶数.先手确定方向其实都是一样的,但 ...
- 洛谷 P1288 取数游戏II
奇奇怪怪的游戏,不多写了 #include<cstdio> ]; int main() { int i; scanf("%d",&n); ;i<=n;i+ ...
- 【洛谷P1288】取数游戏II
取数游戏II 题目链接 显然,由于一定有一个0,我们可以求出从初始点到0的链的长度 若有一条链长为奇数,则先手可以每次取完一条边上所有的数, 后手只能取另一条边的数,先手必胜: 反之若没有奇数链,后手 ...
- 【博弈论】【P1288】取数游戏II
传送门 Description 有一个取数的游戏.初始时,给出一个环,环上的每条边上都有一个非负整数.这些整数中至少有一个0.然后,将一枚硬币放在环上的一个节点上.两个玩家就是以这个放硬币的节点为起点 ...
- luoguP1288 取数游戏II [博弈论]
题目描述 有一个取数的游戏.初始时,给出一个环,环上的每条边上都有一个非负整数.这些整数中至少有一个0.然后,将一枚硬币放在环上的一个节点上.两个玩家就是以这个放硬币的节点为起点开始这个游戏,两人轮流 ...
随机推荐
- ANSI码和UNICODE码
什么是ANSI,什么又是UNICODE呢? 其实这是两种不同的编码方式标准,ANSI中的字符采用8bit,而UNICODE中的字符采用16bit. (对于字符来说ANSI以单字节存放英文字符,以双字节 ...
- 启动及更改tomcat 配置
到tomcat安装的bin目录下面,双击那个startup.bat文件,启动Tomcat 去浏览器输入 http://localhost:8080/ 然后出现下面的界面,那就说明你的tomcat配置 ...
- Flex中如何利用FocusManager类的setFocus函数设置TextInput的焦点的例子
参考:https://blog.csdn.net/liruizhuang/article/details/5876455 <?xml version="1.0" encodi ...
- hbase-java-api003(put list)
package api; import java.io.IOException; import java.util.ArrayList; import java.util.List; import o ...
- python遍历某一位置所有文件夹中的文件
通过多次遍历达到找出所有文件的目的 import os rootdir=["d:/77"] c=[] for i in rootdir: for parent,dirnames,f ...
- Python scrapy - Login Authenication Issue
https://stackoverflow.com/questions/37841409/python-scrapy-login-authenication-issue from scrapy.cra ...
- 20155228 实验四 Android开发基础
20155228 实验四 Android开发基础 实验内容 1.基于Android Studio开发简单的Android应用并部署测试; 2.了解Android.组件.布局管理器的使用: 3.掌握An ...
- Spark学习之路 (十二)SparkCore的调优之资源调优
摘抄自:https://tech.meituan.com/spark-tuning-basic.html 一.概述 在开发完Spark作业之后,就该为作业配置合适的资源了.Spark的资源参数,基本都 ...
- ssh 免登录
1. 生成 ssh 公钥和私钥 xiluhua@vm-xiluhua ~ $ ssh-keygen Generating public/private rsa key pair. Enter file ...
- python isinstance()方法的使用
1. 描述Python中的 isinstance() 函数,是Python中的一个内置函数,用来判断一个函数是否是一个已知的类型,类似 type(). 2. 语法isinstance(object,c ...