\(Mex\) 运算

\(mex(S)\) 为不属于集合 \(S\) 的最小非负整数,即:

\[mex(S)=\min \limits_{x \in \mathbb{N},x \not\in S} \{x\}
\]

eg:\(mex(\{2,4,5\})=3,mex(\{\})=0\)

有向图游戏

有向无环图中,一颗棋子放在起点,双方轮流将这枚棋子沿有向边移动,不能移动则输

博弈论问题可转化为有向图游戏

\(SG\) 函数

在有向图游戏中,定义 \(SG(x)\) 为 \(x\) 节点的后继节点 \(y_1,y_2,...,y_n\) 的 SG 值组成的集合的 Mex,即:

\[SG(x)=mex(\{SG(y_1),SG(y_2),...,SG(y_n)\})
\]

一个有向图游戏 \(G\) 的 SG 值为起点的 SG 值

SG 定理

由 n 个有向图游戏组成的游戏的 SG 值为所有子游戏 \(G_1,G_2,...,G_n\) 的 SG 值的异或值,即

\[SG(G)=SG(G_1) \ xor \ SG(G_2) \ xor \ ... \ xor \ SG(G_n)
\]

例题

hdu1847

SG 函数模板

/************************************************
*Author : lrj124
*Created Time : 2020.08.14.10:38
*Mail : 1584634848@qq.com
*Problem : hdu1847
************************************************/
#include <cstring>
#include <cstdio>
const int maxn = 1000 + 10;
int f[maxn],sg[maxn];
bool vis[maxn];
inline void get_sg() {
for (int i = 1;i < maxn;i++) {
memset(vis,false,sizeof vis);
for (int j = 1;j <= f[0] && i-f[j] >= 0;j++) vis[sg[i-f[j]]] = true;
for (int j = 0;;j++) if (!vis[j]) { sg[i] = j; break;}
}
}
int main() {
freopen("hdu1847.in","r",stdin);
freopen("hdu1847.out","w",stdout);
for (int i = 1;i < maxn;i <<= 1) f[++f[0]] = i;
get_sg();
for (int n;scanf("%d",&n) ^ EOF;puts(sg[n] ? "Kiki" : "Cici"));
return 0;
}

SG 函数学习的更多相关文章

  1. SG函数学习

    尼姆博弈就是sg函数的简单体现 学习粗:https://blog.csdn.net/luomingjun12315/article/details/45555495 //f[N]:可改变当前状态的方式 ...

  2. SG函数学习总结

    有点散乱, 将就着看吧. 首先是博弈论的基础, 即 N 和 P 两种状态: N 为必胜状态, P 为必败状态. 对于N, P两种状态, 则有 1. 没有任何合法操作的状态, P; 2. 可以移动到P局 ...

  3. 学习笔记--博弈组合-SG函数

    fye学姐的测试唯一的水题.... SG函数是一种游戏图每个节点的评估函数 具体定义为: mex(minimal excludant)是定义在整数集合上的操作.它的自变量是任意整数集合,函数值是不属于 ...

  4. HDU 1536 sg函数

    S-Nim Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  5. hdu-------(1848)Fibonacci again and again(sg函数版的尼姆博弈)

    Fibonacci again and again Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Jav ...

  6. 【转】博弈问题及SG函数(真的很经典)

    博弈问题若你想仔细学习博弈论,我强烈推荐加利福尼亚大学的Thomas S. Ferguson教授精心撰写并免费提供的这份教材,它使我受益太多.(如果你的英文水平不足以阅读它,我只能说,恐怕你还没到需要 ...

  7. (转)博弈问题与SG函数

    博弈问题若你想仔细学习博弈论,我强烈推荐加利福尼亚大学的Thomas S. Ferguson教授精心撰写并免费提供的这份教材,它使我受益太多.(如果你的英文水平不足以阅读它,我只能说,恐怕你还没到需要 ...

  8. 博弈论进阶之SG函数

    SG函数 个人理解:SG函数是人们在研究博弈论的道路上迈出的重要一步,它把许多杂乱无章的博弈游戏通过某种规则结合在了一起,使得一类普遍的博弈问题得到了解决. 从SG函数开始,我们不再是单纯的同过找规律 ...

  9. 博弈论初步(SG函数)

    讲解见此博客https://blog.csdn.net/strangedbly/article/details/51137432 理解Nim博弈,基于Nim博弈理解SG函数的含义和作用. 学习求解SG ...

随机推荐

  1. DJANGO-天天生鲜项目从0到1-015-部署-uWSGI+Nginx

    本项目基于B站UP主‘神奇的老黄’的教学视频‘天天生鲜Django项目’,视频讲的非常好,推荐新手观看学习 https://www.bilibili.com/video/BV1vt41147K8?p= ...

  2. spring学习(八)事务操作

    一.事务的概念: 事务是并发控制的单位,一系列操作组成的工作单元,该工作单元内的操作是不可分割的,也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做,所有操作必须成功完成,否则 ...

  3. python基础--python基本知识、七大数据类型等

    在此申明一下,博客参照了https://www.cnblogs.com/jin-xin/,自己做了部分的改动 (1)python应用领域 目前Python主要应用领域: 云计算: 云计算最火的语言, ...

  4. Python环境那点儿事(Windows篇)

    Python环境配置那点儿事(Windows篇) 版本选择 (根据你的开发经验选择合适版) 适当版2.7 适当版3.6 适当版3.7 下载链接:python.org 安装 正规的Windows10操作 ...

  5. springboot2.2 集成 activity6 请假完整示例

    新手学习记录.写在springboot test 示例  示例代码地址看结尾.后面有带页面的示例. SpringBoot Test无页面简单示例 员工请假流程 员工发起申请,附带请假信息(请假几天) ...

  6. PHP diskfreespace() 函数

    定义和用法 diskfreespace() 函数返回指定目录的可用空间,以字节为单位. 该函数是 disk_free_space() 函数的别名. 语法 diskfreespace(directory ...

  7. 痞子衡嵌入式:为下一代智能可穿戴设备而生 - i.MXRT500

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RTxxx系列MCU的新品i.MXRT500. 自2018年i.MXRTxxx系列首款芯片i.MXRT600(主打智能语 ...

  8. Java中15种锁的介绍

    作者:搜云库技术团队 原文:https://segmentfault.com/a/1190000017766364 1. Java 中15种锁的介绍 在读很多并发文章中,会提及各种各样锁如公平锁,乐观 ...

  9. LeetCode(2)---路径总和

      给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和. 说明: 叶子节点是指没有子节点的节点. 示例: 给定如下二叉树,以及目标和 sum = ...

  10. Centos7 如何通过win10 的远程桌面连接进行远程访问

    首先,如果安装测centos7是已经安装了GNOME 或者 KDE 桌面, 则只需要再安装xrdp就可以了. 直接通过yum install xrdp 是不行的,因为xrdp 不在默认源中   先配置 ...