算法基础之台阶-Nim游戏

算法基础之台阶-Nim游戏

码农世界 2024-05-28 前端 99 次浏览 0个评论

台阶-Nim游戏

  • 核心思想:博弈论

    • 可以看作第i阶台阶上有i个含有i个石子的堆
    • 这样所有台阶上一共n!个堆就变成了经典Nim
    • 优化:发现偶数阶台阶上2n堆异或 = 0 , 奇数阶台阶异或 = 原本石子数量
      • 因此 当遍历到奇数阶时异或一下就行
      •   #include 
          #include 
          
          using namespace std;
          
          const int N = 100010;
          
          int main()
          {
              int n;
              scanf("%d", &n);
          
              int res = 0;
              for (int i = 1; i <= n; i ++ )
              {
                  int x;
                  scanf("%d", &x);
                  if (i & 1) res ^= x;
              }
          
              if (res) puts("Yes");
              else puts("No");
          
              return 0;
          }
        

转载请注明来自码农世界,本文标题:《算法基础之台阶-Nim游戏》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,99人围观)参与讨论

还没有评论,来说两句吧...

Top