将每堆的数表示为二进制形式,然后将所有数异或起来,如果先手时,异或的结果为非0,则必赢(调整某个二进制的某几位,使其变为0),
原创
2021-07-13 15:54:15
92阅读
定义: 通常的Nim游戏的定义是这样的:有若干堆石子,每堆石子的数量都是有限的,合法的移动是 “选择一堆石子并拿走若干颗(不能不拿)”,如果轮到某个人时所有的石子堆都已经被拿空了, 则判负(因为他此刻没有任何合法的移动)。 游戏状态只分两种:当前先手必胜,当前先手必败;前者称为N位置,后者称为P位置
转载
2017-12-20 09:52:00
77阅读
2评论
Nim游戏的数学理论论述Nim游戏是博弈论中...
转载
2019-04-21 17:38:00
104阅读
2评论
Nim游戏的数学理论论述Nim游戏是博弈论中...
转载
2019-04-21 17:38:00
112阅读
2评论
Nim游戏的数学理论论述Nim游戏是博弈论中最经典的模型,是组合游戏(Combinatorial Games)的一种,属于“Impartial Combinatorial Games”(以下简称ICG)。满足以下条件的游戏是ICG:1、有两名选手;2、两名选手交替对游戏进行移动(move),每次一步,选手可以在(一般而言)有限的合法移动集合中任选一种进行移动;3、对于游戏的任何一种可能的...
原创
2021-08-10 10:03:41
328阅读
题意:给出几堆石子数量,每次可以取走一堆中任意数量的石头,也可以将一堆分成两堆,而不取。最后取走者胜。思路:石子数量很大,不能直接算,sg打表找出规律:正常情况下a[i]=i,但是有例外的,就是i%4=0和i%4=3的sg值是交换了的,所以要算某个状态的sg值时,若模4为0,则进行自减,若模4为3则...
转载
2015-05-19 17:30:00
128阅读
2评论
Nim游戏的数学理论论述Nim游戏是博弈论中最经典的模型,是组合游戏(Combinatorial Games)的一种,属于“Impartial Combinatorial Games”(以下简称ICG)。满足以下条件的游戏是ICG: 1、有两名选手; 2、两名选手交替对游戏进行移动(move),每次一步,选手可以在(一般而言)有限的合法移动集合中任选一种进行移动; 3、对于游戏的任何一种可能的局
原创
2022-03-24 11:31:13
313阅读
https://leetcode.com/problems/nim-game/博弈论中极为经典的尼姆游戏。有总数为n的石头,每个人可以拿1~m个石头,两个人交替拿,拿到最后一个的人获胜。究竟是先手有利,还是后手有利?1个石子,先手全部拿走; 2个石子,先手全部拿走; 3个石子,先手全部拿走; 4个石子,后手面对的是先手的第1,2,3情况,后手必胜; 5个石子,先手拿走1个让后手面对第4种情况
原创
2022-12-02 00:52:12
225阅读
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2508 Accepted Submission(s): 1297 Problem Descrip
原创
2021-06-04 22:19:15
124阅读
博弈的题目,打表找规律还是相当有用的一个技巧。这个游戏在原始的Nim游戏基础上又新加了一个操作,就是游戏者可以将一堆分成两堆。这个SG函数值是多少并不明显,还是用记忆化搜索的方式打个表,规律就相当显然了。 1 #include 2 #include 3 4 const int maxn = 1...
转载
2015-04-21 12:51:00
170阅读
2评论
原题链接 考察:博弈论 看了其他题解都是不难发现...,果然是我太弱了(.) 思路: 这题不是打表胜负态,而是打表sg函数.可以发现4个一循环. Code #include <iostream> using namespace std; int n; int main() { int T; scan
转载
2021-05-24 13:05:00
137阅读
2评论
,请谅解~
Nim or not Nim?
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 960 Accepted Submission(s): 466Problem Description
Nim is a two-pla
转载
2017-04-25 12:29:00
63阅读
题干:Nim is a mathematical game of strategy in which two players take turns removing objove object in his/her turn. This...
原创
2022-06-15 12:13:46
46阅读
题意: 有一堆石子,里面有n个石头,每次可以从中取出1~3个,两人轮流取,最后一个石子被谁取走即为赢家。你先取,问最后谁赢?思路: n%4>0则先手赢,因为每次总是可以给对方留4个石子的倍数,而对方最多只能取到3个,剩下的给先手来取,所以先手赢。C++:1 class Solution {2 p...
转载
2015-10-28 10:26:00
63阅读
2评论
您和您的朋友,两个人一起玩 Nim游戏:桌子上有一堆石头,每次你们轮流拿掉 1 到 3 块石头。 拿掉最后一块石头的人就是胜利者。由您来开局。你们两个都是聪明人,相信都有最佳的游戏策略。 请编写一个函数,来判断您是否可以在给定的石头数量的情况下赢得游戏。比方说,如果堆中有4块石头,那么你永远不会赢得
转载
2018-04-09 22:54:00
256阅读
2评论
NimProblem 301Nim is a game played with heaps of stones, where two players take it in turn to remove any number of stones from any heap until no stones remain.We'll consider the three-he
原创
2022-08-11 14:48:13
53阅读
题意:给你n堆石子,每次操作可以在任意一堆石子里取走一部分或者将这堆石子分成两堆,最后操作的人取胜。 解题思路:利用sg定理来解组合游戏的和,每堆石子看成一个游戏,对于有x个石子的堆,它的所有后继状态有 0, 1, 2, ... , x-1 ,(1, x-1), (2, x-2), .. (d, x-d),于是可以很容易处理出小数据的sg函数,然后可以发现4k+3的sg值为4k+4,4k+4的sg值为4k+3,其他所有x的sg值都为x,根据sg定理每堆sg值异或一下就可以解决了。 /* **********************************************Author .
转载
2013-10-31 22:13:00
120阅读
2评论
和之前一道题是类似的,输出第一步走的方法,遍历数组找到a[i]^s<a[i]的那个数a[i]-a[i]^s就是要取的数 #include<map> #include<set> #include<cmath> #include<queue> #include<stack> #include<vecto
转载
2017-06-22 16:11:00
31阅读
2评论
链接题意:N堆石子,每堆里有\(a_i\)个石子,两个人可以拿每堆中的任意一个,问先手是否必胜思路:Nim博
原创
2022-07-15 10:35:16
62阅读
Nim游戏的概述:还记得这个游戏吗?给出n列珍珠,两人轮流取珍珠,每次在某一列中取至少1颗珍珠,但不能在两列中取。最后拿光珍珠的人输。后来,在一份资料上看到,这种游戏称为“拈(Nim)”。据说,它源自中国,经由被贩卖到美洲的奴工们外传。辛苦的工人们,在工作闲暇之余,用石头玩游戏以排遣寂寞。后来流传到高级人士,则用便士(Pennies),在酒吧柜台上玩。最有名的玩法,是把十二枚便士放
转载
2023-04-20 23:02:52
128阅读