zoukankan      html  css  js  c++  java
  • 学习笔记 Multi-Nim

    Multi-Nim

    有n堆石子,

    两个人可以从任意一堆石子中拿任意多个石子(不能不拿)

    或把一堆数量不少于2石子分为两堆不为空的石子

    没法拿的人失败。问谁会胜利

    分析

    我们实质上还是可以把TA分为若干个子问题

    可以使用SG定理解释

    如果只有操作1 那么就是裸的Nim游戏

    操作2就是把一个子游戏分解为两个子游戏

    可以使用SG(异或运算)将其作为连接

    例如

    (SG(3)=mex{(0),(1),(2),(1,2)})

    SG值分别为({0,1,2,3})

    那么(SG(3)=mex{0,1,2,3}=4)

    但是一般来讲的话 直接套结论的博弈论的(a_i<=10^9)

    怎么办?

    打表找规律

    前人总结规律如下

    [SG[x]=egin{cases} x-1 (x\%4==0)\ x (x\%4==1 or 2)\ x+1 (x\%4==3)\ end{cases} ]

    Multi-SG

    根据上面的游戏我们定义

    1.Multi-SG游戏规定 在符合拓扑原则的前提下一个单一游戏的后继可以是多个单一游戏

    2.Multi-SG游戏其他规则同一般SG

    注意区分后继以及多个单一游戏

    对于一个状态来讲

    不同的划分方法会有多个不同的后继

    而在一个后继当中会有多个独立的游戏

    该后继状态SG值即为后继状态中独立游戏的异或和

    该状态的SG值即为后继状态的(mex)

    例题

    【hdu3032】

    【luogu3185】 (or) 【BZOJ1188】

    【luogu3235】 (or​) 【BZOJ3576】

    【poj2311】

  • 相关阅读:
    c++运算符重载
    c++ const_cast
    SHL
    C++拷贝构造函数(深拷贝,浅拷贝)
    ps命令详解
    static 修饰符
    “宝洁八大问”整理篇
    linux grep命令
    C++操作符重载
    linux中删除指定日期之前的文件
  • 原文地址:https://www.cnblogs.com/LovToLZX/p/13757512.html
Copyright © 2011-2022 走看看