zoukankan      html  css  js  c++  java
  • 阶梯Nim问题

    问题形式

      
      有(n)个位置(1...n),每个位置上有(a_i)个石子。有两个人轮流操作。操作步骤是:挑选(1...n)中任一一个存在石子的位置(i),将至少1个石子移动至(i-1)位置(也就是最后所有石子都堆在在0这个位置)。谁不能操作谁输。求先手必胜还是必败。
        

    结论

      
      问题等价于,求位置为奇数的(a_i)的异或和,若异或和等于0,则先手必败,否则先手必胜。你可能已经注意到这非常像Nim游戏。其实这个游戏恰好等价于:将每个奇数位置的数(x)看成一堆有(x)个石子的石子堆,然后玩Nim游戏。
      

    证明

      
      拿走某一堆石子的一部分,相当于将某个奇位置的石子移动到它左边的偶位置上。
      
      如果大家都只动奇位置的石子,那么这等价于两人在玩Nim游戏。
      
      但如果有人想打破规则呢?
      
      假设Nim游戏先手必胜,那么先手肯定优先玩Nim游戏;如果后手试图破坏局面,将某个偶位置上的若干石子移动到了左边的奇位置i上,那么先手可以将这若干个刚移到i的石子继续移动到i左边的偶位置上,对Nim局面依然没有任何影响,除非后手回头来继续动奇位置的石子,那也只能是输。
      
      那么如果Nim游戏先手必败,也是同理,后手可以用相同的方式迫使先手玩Nim游戏,直到输为止。
      
      因此,奇数位置的石子的相关信息,就直接决定了阶梯(Nim)问题的结果。

  • 相关阅读:
    UDP和TCP是网络通讯
    HTTPS
    Kubernetes Ingress API Ingress资源通过允许API网关样式的流量路由
    30条黄金法则
    工作流
    开发注意H5移动端
    Wireshark TCP
    关于dotnet跨平台 和 移动开发&人工智能 微信公众号
    超燃| 2019 中国.NET 开发者峰会视频发布
    免费下载 80多种的微软推出入门级 .NET视频
  • 原文地址:https://www.cnblogs.com/RogerDTZ/p/9439540.html
Copyright © 2011-2022 走看看