思路:若能给对方留下m+1,就可以胜。否则败。 1 #include 2 using namespace std; 3 int main() 4 { 5 int t,n,m;cin>>t; 6 while(t--) 7 { 8 cin>>n>>m; 9 ...
分类:
其他好文 时间:
2015-05-12 13:05:44
阅读次数:
90
巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。 显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜。因此我们发现了如何取胜的法则:如果n=(m+1)*....
分类:
其他好文 时间:
2015-05-09 18:51:25
阅读次数:
226
又是一道博大精深的博弈题目。
已经说了 巴什博弈,威佐夫博弈,尼姆博弈,SG函数,找规律的博弈,这次和找规律有点类似——对称博弈。
一般都是圆啊方啊什么的。
对于这道题而言,可以有三种情况:
①k等于1 一次最多只能拿1个(每堆只有一个),那就是看奇偶了。
②n≤k 这种情况,那肯定先拿的赢。
③ 这条就是对称博弈了, 除了上述两种情况外的情...
分类:
其他好文 时间:
2015-05-06 23:04:24
阅读次数:
287
题目传送:Public Sale
思路:巴什博弈
AC代码:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define LL long long
#define INF 0x7ff...
分类:
其他好文 时间:
2015-05-02 09:40:08
阅读次数:
110
题目传送:Brave Game
介绍:
巴什博奕(Bash Game):
首先我们来玩一个比较古老的报数游戏。A和B一起报数,每个人每次最少报一个,最多报4个。轮流报数,看谁先报到30.
如果不知道巴什博弈的可能会觉得这个是个有运气成分的问题,但是如果知道的人一定知道怎样一定可以赢。
比如A先报数的话,那么B一定可以赢(这里假定B知道怎么正确的报数)
B可以这样报数,每次报5-...
分类:
其他好文 时间:
2015-05-02 09:39:58
阅读次数:
99
巴什博弈:只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜。因此我们发现了如何取胜的法则:如果n=(m+1)r+s,(r为任意自然数,s...
分类:
其他好文 时间:
2015-04-19 17:40:13
阅读次数:
118
没什么好说的,一道水题。 1 #include 2 3 int main() 4 { 5 int n, m; 6 while(scanf("%d%d", &n, &m) == 2) 7 { 8 if(n <= m) 9 {10 ...
分类:
其他好文 时间:
2015-04-11 19:27:17
阅读次数:
166
这是由n个巴什博奕的游戏合成的组合游戏。对于一个有m个石子,每次至多取l个的巴什博奕,这个状态的SG函数值为m % (l + 1)。然后根据SG定理,合成游戏的SG函数就是各个子游戏SG函数值的异或和。 1 #include 2 3 int main() 4 { 5 int T, n; ...
分类:
其他好文 时间:
2015-04-11 16:07:34
阅读次数:
109
//先到n-1的赢
#include
#include
#include
using namespace std ;
int main()
{
int n , k;
while(scanf("%d%d",&n,&k) , n+k)
{
if((n-1)%(k+1) == 0) printf("Jiang\n") ;
e...
分类:
其他好文 时间:
2015-04-11 14:52:57
阅读次数:
114
如果n在[2, 9]区间,那么Stan胜。如果n在[10, 18]区间,那么Ollie胜,因为不管第一次Stan乘上多少,第二次Ollie乘上一个9,必然会得到一个不小于18的数。如果n在[19, 162]这个区间呢?比如说n=19,那么Stan乘上个2,不管Ollie怎么乘,Ollie得到的数必然...
分类:
其他好文 时间:
2015-04-10 17:35:52
阅读次数:
130