组合博弈入门(还没写好)

(1)巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规
定每次至少取一个,最多取m个。最后取光者得胜。

(2)威佐夫博奕(Wythoff Game):有两堆各若干个物品,两个人轮流从某一堆或同
时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。

(3)尼姆博奕(Nimm Game):有三堆各若干个物品,两个人轮流从某一堆取任意多的
物品,规定每次至少取一个,多者不限,最后取光者得胜。

题目:http://acm.hdu.edu.cn/showproblem.php?pid=1907

简单分析:  这个题分两种情况。 各种糖果数量全部为1。 那么, 每次减少一堆, 由n的奇偶性便可判断出结果。 另一种情况便是不全为1。 那么直接用尼姆博弈的计算方法就可以得出结果。

#include<cstdio>
int main()
{
    int a[60];
    int  T, n;
    scanf("%d", &T);
    while(T--)
    {
        scanf("%d", &n);
        int temp = 0;
        int ans;
        for(int i=0; i<n; i++)
        {
            scanf("%d", &a[i]);
            if(i==0) ans = a[i];
            else
                ans = ans^a[i];
            if(a[i]>1) temp = 1;
        }
        if(temp==0)//全是孤单堆。
        {
            if(n%2)
                printf("Brother\n");
            else
                printf("John\n");
                continue;
        }
         if(ans==0)
            printf("Brother\n");
        else
            printf("John\n");
    }
    return 0;
}

题目:http://acm.hdu.edu.cn/showproblem.php?pid=2509

和上题完全一样的题目。

时间: 2024-08-09 14:39:17

组合博弈入门(还没写好)的相关文章

组合博弈入门知识汇总(转)

(一)巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规 定每次至少取一个,最多取m个.最后取光者得胜. 显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个, 后取者都能够一次拿走剩余的物品,后者取胜.因此我们发现了如何取胜的法则:如果 n=(m+1)r+s,(r为任意自然数,s≤m),那么先取者要拿走s个物品,如果后取者拿走 k(≤m)个,那么先取者再拿走m+1-k个,结果剩下(m+1)(r-1)个,以后保持这样的 取法,那么先取者肯定获

组合博弈入门

人生有“三晃”:一晃大了,一晃老了,一晃没了.我晃一下就够了... 以下为网上搜集资料的汇总: 组合游戏定义:        1.有且仅有两个玩家    2.游戏双方轮流操作    3.游戏操作状态是个有限的集合(比如:取石子游戏,石子是有限的,棋盘中的棋盘大小的有限的)  4.游戏必须在有限次内结束  5.当一方无法操作时,游戏结束. (一)巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个.最后取光者得胜.     显然,如果n=m+

组合博弈入门小结(更新中)

这几天开始学习博弈,发现这一块是个难啃的骨头.以下是我从网上收集的资料汇总: 我国民间有个古老的游戏:就是有物品若干堆,(物品可以是火柴,围棋都可以).两个人轮流从堆中取若干件,规定取光物体者为胜.这个就是我们今天要研究的组合游戏. 组合游戏定义: 1.有且仅有两个玩家    2.游戏双方轮流操作    3.游戏操作状态是个有限的集合(比如:取石子游戏,石子是有限的,棋盘中的棋盘大小的有限的)  4.游戏必须在有限次内结束  5.当一方无法操作时,游戏结束. 现在我们来研究如何取胜: (一)巴什

18.2.26深信服Web实习生补坑(已拿到offer)----持续更新中,还没写完

26号晚上8点左右收到电话,面试大概一小时左右,发挥的一般,问到的大部分都答出来了,有些没有讲好.然后面试官说等通知,问了评价,面试官说我现在大三懂这么多已经很不错了,表达能力需要加强,有点紧张口吃.30分钟后收到实习生offer邮件.这里只记录下几个答的不好的点. 1.var和不var的区别? 先问了作用域相关,然后问如果不用var声明一个变量是属于什么变量,这个是全局变量,肯定一下子答上来,然后又问那么不var的和用var声明的变量有什么区别? js里面的属性是有权限设置的,比如我们直接创建

新闻发布系统、、、还没写完,请看下集

真希望你笑的时候,旁边坐着的是一个能和你一起笑的人.合适的圈子,会接纳你所有的好事却不生嫉妒.在真正的朋友面前,她从不会认为你显摆,只会由衷的为你高兴.总有些人看不得你好.但你却从此看清了哪些是真正的朋友,哪些只是过客.生活无需过多陪衬,三观不和的朋友多了,越热闹越冷清. 第一项:BaseDAO public class BaseDAO { public static final String driver="com.mysql.jdbc.Driver"; public static

sql语句练习50题(我自己写的答案,还没写完)

Student(Sid,Sname,Sage,Ssex) 学生表Course(Cid,Cname,Tid) 课程表SC(Sid,Cid,score) 成绩表Teacher(Tid,Tname) 教师表练习内容:1.查询“某1”课程比“某2”课程成绩高的所有学生的学号:SELECT a.Sid FROM SC AS a ,SC AS bWhere a.Cid IN (SELECT Cid FROM Course Where Cname="某1")AND b.Cid IN (SELECT

Xamarin University-----Xamarin Mobile Certification Exam考试经历(还没写完)

我是在2017年8月7日通过的Xamarin Certification Exam(Xamarin认证考试), 然后今年8月底,Xamarin考试就改革了,考试改革页面在这里 我简单介绍一下改革前的考试规则:考试范围:20门课程. 考试语言: 英语 考试时间: 180分钟(3个小时) 考题数量: 150道题 考试题型: 单项选择题,多项选择题,判断题. 通过分数: 最低要求80分(满分100分) 是否开卷: 开卷. 考试次数限制: 你最多只能参加三次考试,如果你三次都不通过,我就不知道了....

Xamarin University-----学习经历(还没写完)

首先要感谢微软,毕竟收购Xamarin是大功一件. 微软大土豪,直接把Xamarin University的价格砍了一半,原来是一年一付,2000美元   !!!再次感谢土豪! Xamarin University在今年3月3日实行了新的定价策略(按月支付,只要83.25美元, 但还是需要VISA信用卡等外币信用卡)-------价格页面在这里. 课程设置: 在线课堂: 老师:

学习数据结构的第六天(一)(包括一些还没学习的,指导之后学习的要点)

现在看一下,set和map的作用,以及treeset的作用. 对于以后还需要学哪些: 对于相应的时间复杂度的分析.对于排序的相应内容,都是需要再看的. 什么最好.最坏之类的. 自写数据结构对于leetcode相应代码的实现也要学,在哪些部分去写private class 在哪些部分去写private interface,都要学. 对于之前学过的计算机网络.操作系统等知识,需要先复习已经学过的了.然后的话再去根据面试添加内容. set和map的相应内容: 如果说自己去写相应的实现, Set<Str