• 学习笔记 Nim


    Nim

    谁取到最后一个谁赢

    定义 : 异或和为0 T态 异或和不为0 S态

    定理1 对于任意一个S态 总能合理合法地使其转化为T态

    这是可以证明的

    还记得取火柴游戏吗 ? ? ?

    (x=a_1 xor a_2 xor a_3 xor ...... xor a_n>0)

    那么根据异或的意义 对于x的最高位 必定存在(a_i)与其最高位对应

    那么$ a_{ii}=a_i xor x<a_i $如果具有着相同最高位的话 一定是相互消去最高位的

    所以我们仅需要从(a_i)当中取出((a_i-a_ii))根火柴 S->T

    定理2 对于任意一个T态 无论怎么取 都是转化为S态

    反证法证明

    (x_1=a_1 xor a_2 xor a_3 xor ...... xor a_i xor ...... xor a_n=0)

    (x_2=a_1 xor a_2 xor a_3 xor ...... xor a_{ii} xor ...... xor a_n=0)

    那么(x_1 xor x_2=a_1 xor a_2 xor a_3 xor ...... xor a_i xor ...... xor a_n xor a_1 xor a_2 xor a_3 xor ...... xor a_{ii} xor ......a_n=0)

    也就是(a_i xor a_{ii}=0) 与已知矛盾 所以得证

    那么 一开始为S态

    先手可以先将S态转换为T态

    然后就是后手 先手 后手 先手

    由于每一次 后手面对的是T态 只可以将T态->S态

    但是先手绝顶聪明 总是可以将S态->T态

    那么 最后总会是后手面对全0的T状态 那么就是loser

    同理一开始为T态。。。。。。

    例题

    【POJ1704】

    【luogu1247】

  • 相关阅读:
    SQL 多列合并一列
    jQuery Ajax post多个值传参
    jquery获取select选中的值
    js 事件对象
    有关cookie
    事件冒泡和事件捕获
    js事件监听
    阻止浏览器的默认行为
    鼠标拖拽效果
    自定义右键菜单
  • 原文地址:https://www.cnblogs.com/LovToLZX/p/13757516.html
Copyright © 2020-2023  润新知