news 2026/3/27 15:53:36

博弈论 Nim游戏

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
博弈论 Nim游戏

之前从来没有系统学过博弈论的相关定理,遇到的基本都是从题面中找到相关的规律。在刷牛客tracker的时候遇到了这个问题,总结一下。

经典模型

地上有n堆石子,甲乙两人交替取石子。每人每次可以从任意一堆里面取,但不能不取。最后没有石子可取的人就输了。假如甲先手,且已知每堆石子的数量是a i a_iai,问谁会取得获胜?

  • 结论

如果( S = a 1 ⊕ a 2 ⊕ ⋯ ⊕ a n ≠ 0 ) (S = a_1 \oplus a_2 \oplus \dots \oplus a_n≠0)(S=a1a2an=0),则先手必胜

如果( S = a 1 ⊕ a 2 ⊕ ⋯ ⊕ a n = 0 ) (S = a_1 \oplus a_2 \oplus \dots \oplus a_n=0)(S=a1a2an=0),则后手必胜

洛谷有一道板子题,可以直接用结论解决:P2197 【模板】Nim 游戏 - 洛谷


结论的变种

大多数情况都不会直接使用结论,下面说两种简单的变种。

小A取石子

小A取石子_牛客题霸_牛客网

这个题的变化之处在于先手在游戏开始之前可以选择先在某一堆取k kk个石子。

通过结论我们可以知道:必败态之后一定有必胜态

  • 如果此时的状态本来就是先手胜,可以不进行这个操作
  • 如果此时的状态是后手胜,就需要考虑进行操作
    • 如果k=0,无法进行操作,那么会失败
    • 如果k>max_element,即k比最大的那一堆都大,也无法操作,失败
    • 其他通过操作都能找到必胜态
voidsolve(){intk;cin>>n>>k;vector<int>a(n);for(auto&i:a)cin>>i;intx_or=0;for(autoi:a)x_or^=i;if(x_or){cout<<"YES"<<endl;return;}intsum=*max_element(all(a));if(!k||k>sum)cout<<"NO";elsecout<<"YES";}

取火柴游戏

P1247 取火柴游戏 - 洛谷

本题不同的是,不仅要判断是否先手必胜,还要给出如果先手必胜的话第一次要取哪一堆的多少个石子

从结论中我们可以得到必胜态之后必为必败态,即达到X = a 1 ⊕ a 2 ⊕ ⋯ ⊕ a n = 0 X = a_1 \oplus a_2 \oplus \dots \oplus a_n=0X=a1a2an=0

此时的状态是:
a 1 ⊕ a 2 ⊕ ⋯ ⊕ a n = X a_1 \oplus a_2 \oplus \dots \oplus a_n=Xa1a2an=X
我们此时想让它变成必败态,根据异或的交换律:
a 1 ⊕ ( a 2 ⊕ X ) ⊕ ⋯ ⊕ a n = 0 a_1 \oplus (a_2\oplus X) \oplus \dots \oplus a_n=0a1(a2X)an=0
由于是取走一堆石子之后变成的这样,所以需要a 2 > a 2 ⊕ X a_2>a_2 \oplus Xa2>a2X

题中要求输出的< b , a > <b,a><b,a>的字典序尽可能小,其中b bb是堆数,a aa是取走的石子数。也就是说要选择尽可能靠左的石子堆进行操作。那么我们从前往后遍历,找到符合条件的直接操作就行了。

// Problem: P1247 取火柴游戏// Contest: Luogu// URL: https://www.luogu.com.cn/problem/P1247// Memory Limit: 125 MB// Time Limit: 1000 msvoidsolve(){cin>>n;vector<int>a(n);intx_or=0;for(auto&i:a)cin>>i,x_or^=i;if(x_or){for(inti=0;i<n;i++){if((a[i]^x_or)<a[i]){cout<<a[i]-(a[i]^x_or)<<' '<<i+1<<endl;a[i]=a[i]^x_or;break;}}for(inti:a)cout<<i<<' ';}elsecout<<"lose";}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/25 3:23:08

大模型推理知识点总结

一、 大模型推理的基本概念 先明确一个核心问题&#xff1a;什么是大模型推理&#xff1f; 简单来说&#xff0c;推理就是给定一个输入&#xff08;比如一段文字指令&#xff09;&#xff0c;让训练完成的大模型通过前向计算&#xff0c;输出符合预期结果的过程。这个过程和模型…

作者头像 李华
网站建设 2026/3/22 12:45:35

芒格的“关键少数“原则在量子科技人才投资中的应用

芒格的“关键少数”原则在量子科技人才投资中的应用关键词&#xff1a;芒格、关键少数原则、量子科技、人才投资、应用策略摘要&#xff1a;本文深入探讨了芒格的“关键少数”原则在量子科技人才投资领域的应用。首先介绍了背景信息&#xff0c;包括研究目的、预期读者等内容。…

作者头像 李华
网站建设 2026/3/20 7:01:52

大模型学习路线图:程序员必备收藏,从入门到实战全覆盖_大模型学习路线(2026最新)

本文提供了一份完整的大模型学习路线图&#xff0c;分为七个阶段&#xff1a;基础知识准备、机器学习基础、深度学习入门、自然语言处理基础、大规模语言模型、应用实践和持续进阶。每个阶段详细列出了核心知识点和推荐学习资源&#xff0c;包括经典书籍、论文和在线课程&#…

作者头像 李华
网站建设 2026/3/25 11:49:05

豆包/Kimi写论文后AI率太高?这几款工具一键搞定

title: “豆包/Kimi写论文后AI率太高&#xff1f;这几款工具一键搞定” slug: “doubao-kimi-paper-ai-rate-reduction-tools” date: 2026-01-15 author: “论文降AI攻略” tags: [“豆包写论文降AI”, “Kimi论文AI率高”, “AI写作降AI工具”, “豆包降AI”, “Kimi降AI率”…

作者头像 李华
网站建设 2026/3/22 23:15:22

2026年最值得入手的8款降AI神器,亲测第3款效果炸裂

2026年最值得入手的8款降AI神器&#xff0c;亲测第3款效果炸裂 TL;DR&#xff1a;2026年知网AIGC检测系统升级后&#xff0c;传统降重方法已经失效。本文实测8款主流降AI工具&#xff0c;重点推荐嘎嘎降AI&#xff08;达标率99.26%&#xff09;和比话降AI&#xff08;知网AI率可…

作者头像 李华