博弈论
風吹过
这个作者很懒,什么都没留下…
展开
-
poj 2484 A Funny Game
太坑了!!!把他转换成不是环的来求出sg 我才发现规律的,即n>=3时 sg全是正数题意:有n个硬币围成一圈,两人轮流拿取,每次可以取1个或者相邻的2个,不能取的人输当n==1 || n==2时,明显先手必胜。当n==3时,明显先手必败。由于每次只可取1或2个,而取2个时,2个必须相邻,推断有:当n>3时,若n为偶数,先手无论如何取,后手可在先手对称的位置上取同等数量,原创 2013-08-19 15:56:32 · 620 阅读 · 0 评论 -
poj 1704 Georgia and Bob(阶梯博弈)
题目大意:每个测试点最多有T(1 <= T <= 20)个测试数据。如图所示,Georgia和Bob在玩一种自创的游戏。一个无限长的棋盘上有N个旗子(1 <= N <= 1000),第i个棋子的位置可以用Pi表示(1 <= Pi <= 10000)。现在Georgia先走。每个人每一次可以把一枚棋子向左移动任意个格子,但是不能超越其他棋子,也不能和其他棋子处在同一个格子里。如果轮到某一个人的时候T原创 2013-10-05 20:14:49 · 768 阅读 · 0 评论 -
hdu 1907 John(取火柴游戏2)
题意:n堆火柴,2人每次从任意一堆中取至少1个,也可以将整堆取玩,取得最后一根火柴的人输定义:若所有火柴数异或为0,则该状态被称为利他态,用字母T表示;否则, 为利己态,用S表示。[定理1]:对于任何一个S态,总能从一堆火柴中取出若干个使之成为T态。[定理2]:T态,取任何一堆的若干根,都将成为S态。[定理 3]:S态,只要方法正确,必赢。原创 2013-10-05 19:44:00 · 622 阅读 · 0 评论 -
博弈论小结
博弈知识汇总有一种很有意思的游戏,就是有物体若干堆,可以是火柴棍或是围棋子等等均可。两个人轮流从堆中取物体若干,规定最后取光物体者取胜。这是我国民间很古老的一个游戏,别看这游戏极其简单,却蕴含着深刻的数学原理。下面我们来分析一下要如何才能够取胜。(一)巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜原创 2013-07-29 09:00:36 · 701 阅读 · 0 评论 -
hdu 4371 Alice and Bob
哎!还是思路最重要啊!看到题目一定思路都没有,以为是什么神博弈。。。哎。。。题意:Alice 和 Bob 轮流写数字,假设第 i 次的数字是 S(i) ,那么第 i+1 次的数字 S(i+1)= S(i)+d(k)或 S(i)-d(k),条件是 S(i+1)分析:杂一看真的不好确定必输或必赢状态。那么直接想最后一步,什么时候就结束呢?s(i)+min > n 时就输了;那么s(原创 2013-08-16 19:41:11 · 672 阅读 · 0 评论 -
poj 2505 A multiplication game
题意:2 个人玩游戏,从 1 开始,轮流对数进行累乘,直到超过一个指定的值。解题思路:如果输入是 2 ~ 9 ,因为Stan 是先手,所以Stan 必胜如果输入是 10~18 ,因为Ollie 是后手,不管第一次Stan 乘的是什么,Stan肯定在 2 ~ 9 之间,如果Stan乘以 2 ,那么Ollie就乘以 9 ,就到18了,如果Stan乘以 9 ,那么Ollie乘以大原创 2013-08-17 20:36:43 · 529 阅读 · 0 评论 -
hdu 4315 Climbing the Hill
哎!还是思路啊。。。。。。。。。。。。。。。。。。。。。解:Nim:通常的Nim游戏的定义是这样的:有若干堆石子,每堆石子的数量都是有限的,合法的移动是“选择一堆石子并拿走若干颗(不能不拿)”,如果轮到某个人时所有的石子堆都已经被拿空了,则判负(因为他此刻没有任何合法的移动)。对于一个Nim游戏的局面(a1,a2,...,an),它是P-position当且仅当a1^a2^...^原创 2013-08-17 16:49:15 · 703 阅读 · 0 评论 -
hdu 4387 Stone Game
长度为N的格子,Alice和Bob各占了最左边以及最右边K个格子,每回合每人可以选择一个棋子往对面最近的一个空格移动。最先不能移动的人获得胜利。 官方题解: k=1时 很容易看出,n为奇数则后手获胜,n为偶数则先手获胜 k>1时 如果n=2*k+1,则棋 盘中只有一个空白的格子,每次移动必须移动到当前的空白格子上。先手方可以先随意选择一颗棋子占据中原创 2013-08-17 09:04:10 · 537 阅读 · 0 评论 -
hdu 4678 Mine
。。。。。。wa了无数次,原来多个空白连在一起只计一个。。。。。。。。 每次搜出一个块的个数 如果是偶数则sg=2, 奇数sg=1.单个数字 sg=1#include#include#include#include#include#include#include using namespace std;#define N 1050int map[N原创 2013-08-15 20:55:11 · 637 阅读 · 0 评论 -
hdu 1730 Northcott Game
游戏在一个n行m列(1 ≤ n ≤ 1000且2 ≤ m ≤ 100)的棋盘上进行,每行有一个黑子(黑方)和一个白子(白方)。执黑的一方先行,每次玩家可以移动己方的任何一枚棋子到同一行的任何一个空格上,当然这过程中不许越过该行的敌方棋子。双方轮流移动,直到某一方无法行动为止,移动最后一步的玩家获胜。Tom总是先下(黑方)。图1是某个初始局面,图二是Tom移动一个棋子后的局面(第一行的黑子左移两步)原创 2013-08-16 15:21:47 · 429 阅读 · 0 评论 -
hdu 4664 Triangulation(博弈论 sg找规律打表)
题意:两人玩游戏,有n个平面,每个平面ai个点,轮流画线,线不相交不重复;如果一个平面上画出三角形, 则该平面不能再画线,最后不能画线的人输。 方法:用SG定理求一个平面的SG值,然后去SG函数值找规律,最后各个平面异或可得答案 sg[i]=mex{sg[0]^sg[i-2],sg[1]^sg[i-3],...sg[i-2]^sg[0]},原创 2013-08-08 21:25:07 · 915 阅读 · 0 评论 -
poj 2348 Euclid's Game
题意:给你两个正数,n 和m(假设n>m); 将两者大的减去小的的正整数倍,差必须为非负数,递归循环,谁使得出现0 则 win这题的关键是谁遇到的第一个n大于等于2*m,谁就胜利,以为他们都是聪明的!!如果没有,则一路循环下去,奇数次则第一个人胜利#include#include#includeusing namespace std;typedef long long ll原创 2013-08-20 10:55:57 · 472 阅读 · 0 评论 -
poj 2068 NIM (博弈DP)
题目:有两个队,每个队有n个人,每个人每次有数量限制,取最后一块的输,问获胜策略。解析:dp[i][j]表示第i个人取,还有j块石头 。当j为0的时候,没有石头,这时候是胜,为1。后继中有必败态的为必胜态。#include#include#includeusing namespace std;int a[50],dp[30][10000],n;int dfs(原创 2013-10-06 15:48:08 · 753 阅读 · 0 评论