博弈
T_world
所有的成功都与坚持有关https://tangworld.github.io
展开
-
杭电ACM1564(奇偶规律)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1564题目大意:给出一个n,代表一个n*n的棋盘,一颗棋子在棋盘的角落,两个人轮流移动棋子,谁不能再移动则失败,计算谁会胜出。解题思路:若n为偶数,则先手胜,若为奇数则后手胜。AC代码:#include using namespace std;int main(){ int n;原创 2015-12-15 10:34:08 · 322 阅读 · 0 评论 -
杭电ACM2149(巴什博奕)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2149题目大意:中文题目解题思路:巴什博奕稍加变形,若n大于m,则从m到n的数字均可,另外要注意格式问题,若多输出空格也是会PE的哦。AC代码:#include using namespace std;int main(){ int m,n; while(cin>>m>>n)原创 2015-12-15 20:07:05 · 520 阅读 · 0 评论 -
杭电ACM1850(Nim博弈)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1850题目大意:中文题目解题思路:Nim博弈。AC代码:#include using namespace std;int n[1000005];int main(){ int m; int sum,cnt; while(cin>>m) { sum = cnt = 0;原创 2015-12-15 20:33:26 · 397 阅读 · 0 评论 -
杭电ACM1907(Nim博弈)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1907题目大意:有若干堆糖果,两个人取,每次可以取某一堆中的若干颗,谁取到最后一颗则失败,要求输出获胜者的名字。解题思路:Nim博弈,但要注意每堆都为1的情况,此时再用异或的方式判断会得出刚好相反的结论,因此需要特判。AC代码:#include using namespace std;原创 2015-12-16 11:04:10 · 451 阅读 · 0 评论 -
杭电ACM1846(巴什博奕)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1846题目大意:中文题目解题思路:巴什博奕,若n为(m+1)的倍数,则先手赢,否则后手赢。AC代码:#include using namespace std;int main(){ int t; int n,m; cin>>t; while(t--) { cin>>n原创 2015-12-15 10:55:36 · 392 阅读 · 0 评论 -
巴什博奕(Bash Game)
以前虽然也研究过博弈论,但其实还是一知半解,更多的是记住现有结论,生硬地套用而已,今天重新看了一遍巴什博奕,有了不一样的体会,终于了明白其中的原理。问题描述:有一堆物品,共n个,两人轮流从这堆物品中取,规定每次至少取一个,至多m个,获胜条件分为两种,分别是最后取光者胜或者是最后取光者败。情形一:最后取光者胜分析:若n=m+1,则无论先手取走多少,后手一定可以一次性取走剩下的全部物品,这原创 2016-04-27 22:54:10 · 848 阅读 · 0 评论 -
Nim博弈两题
一、Nim博弈简介1、游戏规则设有k堆物品,(k>=1)各堆分别含有n1,n2,n3,……….nk件物品,游戏过程为: (1)两个游戏者交替进行游戏; (2)当轮到每个游戏者取子时,选择其中的一堆,并从所选的堆中取走至少一件物品(可以取走该堆中所有物品); (3)直到所有堆为空。2、获胜条件在Nim博弈中一般有两种情形,分别为: (1)最后取子的人获胜 (2)最后取子的人失败3、解题方法(原创 2016-04-28 16:49:01 · 511 阅读 · 0 评论 -
HDU2176(Nim博弈)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2176 题目大意:中文题目 解题思路:非常典型的Nim博弈问题,只是用到了Nim博弈进一步的一个结论。首先求所有数目的异或,得到一个结果k,然后判断k,若k为0,则先手败,若k不为0,则先手胜,这时要输出先手的所有取子方案。求每一个数字Ni和k的异或,结果为p,若p小于Ni,则从该堆中取可以获胜,并且原创 2016-04-30 10:44:23 · 766 阅读 · 0 评论