博弈
jason_star
我要变强!
展开
-
HDU 3951 Game (找规律)
题目大意:其实就是一个环形的巴什博奕。n个硬币排成一环,每次我们只能取连续的1-k个。问最后取玩为胜的是谁。 这边k=1的时候需要特判。 当k大于1的时候。 可以知道假如k 那么先手取完之后,假设取了x,这时候就剩下长度为n-x的类巴什博弈问题。因为要取连续,所以隔断部分不算连续,就不能取。 这时候后手的必胜策略是,假如n-x小于k,这取光。 否则将该段分成两端。在之后的操作过程当中,原创 2015-04-22 13:42:09 · 508 阅读 · 0 评论 -
【HDU】2147 kiki's game (博弈 找规律)
题目大意:就是有一个游戏,在一个n*m的矩阵中起始位置是(1,m),走到终止位置(n,1);游戏规则是只能向左,向下,左下方向走,想走到终点的为获胜者。 想法:根据必胜点和必败点去递推,多写几组,看出N,M决定胜负的情况。就可以了。这过程需要耐心 #include using namespace std; int main() { int n,m; while(cin>>n>原创 2015-04-13 12:42:35 · 490 阅读 · 0 评论 -
HDU 2516 取石子游戏 (斐波那契博弈)
大神博客:http://blog.csdn.net/acm_cxlove/article/details/7835016 #include #include #include #include using namespace std; long long f[60]={0,1,2}; int main() { for(int i=3;i<60;i++) f[i原创 2015-04-13 17:59:51 · 508 阅读 · 0 评论 -
HDU 2176 取(m堆)石子游戏 (尼姆博弈)
思路: 对于一组数,必胜态肯定是所有数异或后不为0 必败态的话异或之后为0; 必胜态可以转换成必败态。 即从a[i]中选择一个数是他变成其他所有a[i]数的异或和。这样最终异或值为0,使得对手陷入必败态。 相关知识可以查看http://blog.csdn.net/acm_cxlove/article/details/7854530 #include #include #includ原创 2015-04-14 23:23:33 · 461 阅读 · 0 评论 -
HDU 2177 HDU 2177 取(2堆)石子游戏 (威佐夫博奕)
题目思路:威佐夫博奕的裸题。必败态为奇异局势。 并且 1、非奇异局势可以转化成奇异局势这是必胜的前提。 #define _CRT_SECURE_NO_WARNINGS #include #include #include using namespace std; //威佐夫博奕 //ak=k*(1+sqrt(5))/2 //bk=ak+k; //假如局势不是奇异局势的话 //那么可以转化成奇原创 2015-04-16 00:32:12 · 599 阅读 · 0 评论 -
HDU 3032 Nim or not Nim? (SG函数应用)
题目大意: 与一般的尼姆博弈不同之处在于,每一堆石子你可以进行的操作是,你可以将其分成两堆,并且两堆的个数可以不同。 这边求出SG函数,然后异或判断是奇异局势就可以了。 这边因为范围比较大,所以SG函数的求法是推出来的。多写几组就可以了。 最近刚开始研究SG函数,所以这题也是看别人的题解,说不上怎么推出SG函数的公式,更多的解释,大家可以去看大神的解释。 这边 SG(4k)=4k-1;原创 2015-04-21 23:54:55 · 428 阅读 · 0 评论 -
HDU 2486 A simple stone game (K 倍动态减法博弈游戏,还未理解)
大神博客:http://www.cnblogs.com/jianglangcaijin/archive/2012/12/19/2825539.html #define _CRT_SECURE_NO_WARNINGS #include #include #include #include using namespace std; int a[2100000]; int b[2100000]; in原创 2015-05-01 23:42:19 · 668 阅读 · 0 评论