
博弈论
文章平均质量分 59
wwwiskey
学生
展开
-
POJ 2960 S-Nim 【博弈论,SG函数】
经典的Nim游戏题目中已经给出了——每一堆选取的数量没有限制。S-Nim游戏仅仅是限制了每一次从每一堆中选取的个数,依旧用sg函数计算即可。经典的Nim游戏中sg(x) = x,所以结果就是每一堆的状态直接xor即可,S-Nim游戏先计算每一堆的sg函数值,然后判断方法依旧是用xor。#include #include #include using namespace s原创 2013-08-05 16:48:07 · 2512 阅读 · 0 评论 -
HDU 1729 Stone Game 【博弈论,SG函数】
n个瓶子,每个瓶子里面有一些石头,每次向瓶子里面放石头的数量不能超过瓶子中已经存在的石头数量的平方。很容易看出是“组合游戏和”,因此只需要求出每个瓶子的sg函数值,然后求Nim和即可。寻找必败态:设t,t*t +t = s,因此1. c > t 则当前状态是必胜态,因为c*c+c >= s成立2. c == t 则当前状态为必败态,因为最多放c*c个石头,瓶子未满,对手原创 2013-08-05 19:37:10 · 2737 阅读 · 0 评论 -
HDU 1864 Brave Game 【组合游戏,SG函数】
简单取石子游戏,SG函数的简单应用。有时间将Nim和、SG函数总结一下……暂且搁置。#include #include #define N 1002int n, T, m, sg[N];bool vis[N];int main() { scanf("%d", &T); while (T--) { scanf("%d%d", &n原创 2013-08-05 15:34:32 · 895 阅读 · 0 评论 -
CF 256C Furlo and Rublo and Game【博弈论,SG函数】
暴力的求SG函数会超时,正解是先处理出10^6以内的SG值,对于更大的,开根号之后计算出。小数据观察可以发现sg函数值成段出现,而且增长速度很快,因此可以计算出来每一段的范围,只需打表即可。#include #include using namespace std;typedef long long ll;ll x, a[] = {3, 15, 81, 6723, 5062原创 2013-08-05 15:39:40 · 1489 阅读 · 0 评论 -
博弈论总结
有一种很有意思的游戏,就是有物体若干堆,可以是火柴棍或是围棋子等等均可。两个人轮流从堆中取物体若干,规定最后取光物体者取胜。这是我国民间很古老的一个游戏,别看这游戏极其简单,却蕴含着深刻的数学原理。下面我们来分析一下要如何才能够取胜。(一)巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。转载 2013-08-06 09:15:23 · 1218 阅读 · 0 评论 -
HDU 4664 Triangulation【博弈论】
一个平面上有n个点(一个凸多边形的顶点),每次可以连接一个平面上的两个点(不能和已经连接的边相交),如果平面上已经出现了一个三角形,则不能在这个平面上继续连接边了。现在总共有N个平面,每个平面上都有若干点。(就是有N个相同的游戏同时进行了)。想法很单纯,就是计算出每一个平面上游戏的sg函数值,然后求Nim和就哦了。sg函数暴力求法:一个平面上连接点时,不能连接已经有边的顶点原创 2013-08-09 21:08:16 · 1861 阅读 · 1 评论