gpt4 book ai didi

algorithm - SPOJ QCJ3(Grundy-Sprague + NIM)

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:07:00 33 4
gpt4 key购买 nike

您好,在 SPOJ ( http://www.spoj.com/problems/QCJ3/ ) 上遇到了一个问题。我试图将这个问题映射到 Grundy 数字,然后映射到 Sprague-Grundy + NIM 堆。我可以推断出以下...

  1. 如果在任何位置/位置(1、2、3、4...)上只有偶数个硬币,第一个玩家总是输。

  2. 如果在任何地方只有一个位置放置奇数硬币,并且在任何地方放置偶数硬币,则第一个玩家获胜。

  3. 根据放置在位置 (1,2,3,...k-1) 的硬币,第 K 个位置的硬币移动可以达到任何(下一个)状态,具体取决于放置在位置的硬币数量以前的职位。我发现这很难映射到 Grundy Numbers + Sprague-Grundy + NIM 堆。

*** 我确实看到了一个代码,其中通过异或(放置奇数个硬币的位置)得出了解决方案。如果这种方法产生了正确的结果(当然我没有提交,因为我不明白“为什么?”)这种方法背后的逻辑是什么。

最佳答案

考虑在位置 x 有一个硬币的游戏。

这与使用大小为 x 的堆玩 Nim 相同。

现在整个游戏可以看作是一组游戏,每个硬币一个。 Sprague-Grundy 理论有一个标准结果,即游戏集合的值(value)是单个游戏值(value)的异或。

换句话说,这个游戏等同于 Nim,你在位置 x 处有一堆大小为 x 的硬币。 Nim 的 XOR 解决方案解释了 here .

关于algorithm - SPOJ QCJ3(Grundy-Sprague + NIM),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29993442/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com