博弈
xiamiwage
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
HDOJ 3389 Game (博弈:Staircase Nim)
//3389 Game (Staircase Nim) /* 题意:有n个盒子编号为1-n,每个盒子里面有若干物品 当编号满足a>b && (a+b)%3==0 && (a+b)%2==1时 可以从a盒子中拿>=1个物品到b盒子中 思路:找规律后转换为Staircase Nim 满足此条件:(a+b)%3==0 && (a+b)%2==1的即是3个倍数并且是奇数:3、9、15、原创 2012-09-13 23:00:04 · 765 阅读 · 0 评论 -
HDOJ 3951 Coin Game 博弈
//HDOJ 3951 Coin Game 博弈 /* 题意:有n个硬币围成一圈,每次能取1-k个硬币,问先手胜还是后手胜 思路:如果k>=n,那么一次就能取完了,先手胜 如果k==1,直接奇偶就可以判断胜负了 其他情况下,先手第一次取完后,硬币就展开成一条链,后手就在链中间取 将链分成均等的两份,然后根据对称性就必能取胜。 */ #include #include #incl原创 2012-09-17 20:24:19 · 524 阅读 · 0 评论 -
HDOJ 1536 S-Nim 博弈 SG函数
//HDOJ 1536 S-Nim SG函数 /* 题意: 有n堆石子,每次只能取走 一个给定集合S中出现的元素 的石子,问先手胜负态 思路:sg函数 */ #include #include #include #define N 105 #define M 10005 int k,n,m; int op[N],sg[M];//op为给定集合 int mex(int n){ int i原创 2012-09-18 23:49:53 · 1967 阅读 · 0 评论 -
HDOJ 1851 A Simple Game 博弈 SG函数中找规律
//HDOJ 1851 A Simple Game SG函数中找规律 /* 题意:有n堆石子,每堆分别有m1,m2,m3...个 每堆每次最多能取走最多l1,l2,l3...个,最少去一个 问后手的胜负态 思路:用sg(n,k)表示剩余n个的一堆石子中 每次最多能取走k个 则有 sg(0,1)=0 sg(0,2)=0 sg(0.3)=0 ... sg原创 2012-09-18 23:45:28 · 945 阅读 · 0 评论 -
HDOJ 1760 Fibonacci again and again 博弈 SG函数
//HDOJ 1760 Fibonacci again and again SG函数 /* 题意:有3堆石子,每次能从一堆中取走f个,f是Fib数列(1,2,3,5...) 给定3堆石子的数量,问先手的胜负态 思路:SG函数 */ #include #include #include #define N 20 #define M 1005 int op[N]; int sg[M原创 2012-09-18 23:47:12 · 825 阅读 · 0 评论 -
FAFU 1027 knight 博弈 SG函数
//FAFU 1027 knight 博弈 SG函数 /* 题意:给定一张M*N的图,给T匹马的坐标 1)甲乙两个人轮流选择其中一匹马走,不能不走; 2)每匹马只能从它的左下方两个方向走; 3)无路可走的算输。 思路:预处理算出每个坐标点的SG值,然后^ */ #include #include #include #define N 1005 in原创 2012-09-20 00:47:20 · 699 阅读 · 0 评论 -
HDOJ 2999 Stone Game, Why are you always there? 博弈 SG函数
//HDOJ 2999 Stone Game, Why are you always there? 博弈 SG函数 /* 题意:有n个石子排成一行,每次只能取走连续的f个石子,f为给定的一个集合。 问先手 胜负态 思路:局面不可能存在无法判断的情况 假设有4个石子 集合中只有一个数2 则后继状态有{0,2}{1,1},{2,0} 因为{0,2}和{2,0}表示一样的状态原创 2012-09-20 23:54:36 · 743 阅读 · 0 评论 -
HDOJ 3980 Paint Chain 博弈 SG函数
//HDOJ 3980 Paint Chain 博弈 SG函数 /* 题意:有n个石子围成一个环,每次从中取走m个连续的石子,无法取的输 思路:第一步将取走之后环就变成了链,之后就可以用SG了 所以特判第一步之后 先手变后手 后手变先手就可以了 */ #include #include #include #define N 1005 int n,m; int sg[N]; int原创 2012-09-20 23:55:12 · 853 阅读 · 0 评论 -
HDOJ 1524 A Chess Game SG函数
//HDOJ 1524 A Chess Game SG函数 /* 题意:有一个有向无环图,在一些点有石子,这些石子每次可以往其后继结点移动。 两个人轮流移动,不能移动的为输 思路:建图,算出每个点的SG值 */ #include #include #include #define N 1005 #define M 1000005 int n,m; int num,head[N]; in原创 2012-09-22 00:31:23 · 851 阅读 · 0 评论 -
HDOJ 4155 The Game of 31 博弈搜索
//HDOJ 4155 The Game of 31 博弈搜索 /* 题意:有编号为1、2、3、4、5、6的牌各4张,共24张,两个人轮流取牌, 取牌后要使所有取出的牌的总不超过31,不能取的输。 游戏从给定的局面开始。 思路:从给定的局面开始dfs,当此状态能够到达p状态,则此状态有n状态 否则为p状态,然后判断此时是先手还是后手 */ #include #include原创 2012-09-22 00:32:03 · 945 阅读 · 0 评论 -
POJ 1704 Georgia and Bob (博弈:Staircase Nim)
//POJ 1704 Georgia and Bob (Staircase Nim) /* 题意:有一排的格子从左到右编号为1、2、3...,有n个石子放在上面,每个格子最多只能放一个石子 两个人轮流取石子,每次可以把取的石子往左移。 约束条件:1、不能跨越其他石子 2、不能和其他石子放在同一个格子里面 思路:转化为Staircase Nim 相邻两个石原创 2012-09-13 15:50:47 · 563 阅读 · 0 评论 -
HDOJ 1079 && POJ 1082 Calendar Game (博弈: 暴力枚举所有状态的P\N)
//1079 Calendar Game 博弈 暴力枚举所有状态的P\N,其实网上有非常简单的做法 #include #include #include #include #include using namespace std; bool vis[105][15][35]; int mon[] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; struc原创 2012-09-13 23:11:56 · 1511 阅读 · 0 评论 -
HDOJ 3032 Nim or not Nim? (博弈 :SG)
//HDOJ 3032 Nim or not Nim? (博弈 :SG) /* 题意:有n堆石子,每次可以选择一堆,执行一下操作: 1、取走至少一个 2、如果这堆石子大于一个,可以将其分成2堆,每堆至少一个 取走最后一个的胜利 思路:在Nim的基础上增加了一种操作,无法直接使用Nim的做法,尝试找规律 易得sg(0) = 0; sg(1) = 1; 当一堆原创 2012-09-14 20:55:57 · 461 阅读 · 0 评论 -
HDOJ 2897 邂逅明下 (博弈 : 找规律)
//HDOJ 2897 邂逅明下 博弈 找规律 /* 题意:(题目很操蛋) 有n个硬币,每次最少取p个,最多取q个,当剩余硬币少于p个时,要一次性取完 思路:找规律 例如7 2 4 1 2 3 4 5 6 7 8 9... P P N N N N P P N... 结果很显然 */ #include #include #include int n,p,q,ans原创 2012-09-14 19:42:38 · 2623 阅读 · 0 评论 -
uva 12499 - I am Dumb 3 Staircase Nim
//uva 12499 - I am Dumb 3 Staircase Nim /* 题目地址: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3943 题目: 前面一堆废话,只有后面一小段有用 一个序列有n个数,从左到右非递减,每次可以在任意一个原创 2012-10-08 00:04:53 · 1069 阅读 · 0 评论 -
HDOJ 2177 取(2堆)石子游戏 博弈 威佐夫博奕变形(Wythoff Game)
//HDOJ 2177 取(2堆)石子游戏 威佐夫博奕变形(Wythoff Game) /* 题意:在Wythoff Game游戏的基础上加一个限定:只有2堆石头 如果是必胜态,则需要输出所有可以走的第一步,如果可以同时取走相同的石子的情况要先输出 思路:预处理记录奇异局势的左边位和右边位出现的是第几个奇异局势 正常的Wythoff Game规则判断胜负态 然后枚举所有可能出现原创 2012-09-17 23:01:35 · 1512 阅读 · 0 评论 -
HDOJ 4203 Doubloon Game 博弈 找规律
//HDOJ 4203 Doubloon Game 博弈 找规律 /* 题意:有n个硬币,两个人轮流取,每次只能取m个pow,(1,m,m^2...) 如果先手必败输出0,否则输出第一步最少取走的硬币数量 思路:找规律 当n=2时: 0 1 2 |3 4 5 |6 7 8 9 ... P N N |P N N |P N N P ... 当n=3时: 0 1原创 2012-09-22 00:32:56 · 779 阅读 · 0 评论
分享