博弈论简单入门sb总结


下午讲博弈论。没预习,GG。

整个下午都在学。

0

有一堆共n个石子,两个人轮流取石子,每个人一次可以取1到k个,取到最后一个石子的人胜利。

小学生都会的sb题。若k+1|n,后手必胜。否则先手必胜。

如果k+1|n,先手第一次取了a个的话,后手取k+1-a个就星了。最后先手GG

否则先手一开始取n%(k+1)个,再按照上面的方法来玩。

1

有n堆石子,每堆a[i]个,两个人轮流取石子,每个人一次可以从一堆中取任意多个,取到最后一个石子的人胜利。

引入一个叫SG函数的东西。(好吧那叫SG

直接蒯了:

一个局面的SG为mex{后继局面的SG}。
mex运算为集合中没出现的最小的自然数。
几个局面的和的SG为它们的SG的异或和。
SG不为0时先手必胜,SG为0时后手必胜。

mdzz不会证

然后就很好球了。

设SG(i)为一堆i个石子的SG值。

SG(0)=0
SG(1)=mex{SG(0)}=1
SG(2)=mex{SG(0),SG(1)}=2
...
SG(i)=mex{SG(0),SG(1),...,SG(i-1)}=i

归纳法可证明SG(i)=i

所以把每堆石子的个数xor起来,非0则先手胜,是0则后手胜。

2

有n堆石子,每堆a[i]个,两个人轮流取石子,每个人一次可以从一堆中取1到k个,取到最后一个石子的人胜利。

加了一个限制,实际上将每个a[i]都%=(k+1)就星了。

考虑感性证明,两个人互相取石子,一个人拿了x个,另一个人马上拿走k+1-x个。

然后还是异或。

3

有n堆石子,每堆a[i]个,两个人轮流取石子,每个人一次可以从至多m堆中取,每堆只能取1到k个,取到最后一个石子的人胜利。

首先啃腚可以a[i]%=k+1

emmmmm然后就很不爽了,这怎么做啊

考虑一下m=1的情况(2号情况)的方案

比如这几个SG值

01110110
10101011
10010100

xor起来是01001001

所以先手一开始取走01001001即可,然后后手取了什么数位,先手也跟着取什么数位

最后先手一定会取到所有都是00000000

写到这吧

做几道题再来(咕咕咕

博弈论简单入门sb总结的更多相关文章

  1. 用IntelliJ IDEA创建Gradle项目简单入门

    Gradle和Maven一样,是Java用得最多的构建工具之一,在Maven之前,解决jar包引用的问题真是令人抓狂,有了Maven后日子就好过起来了,而现在又有了Gradle,Maven有的功能它都 ...

  2. [原创]MYSQL的简单入门

    MYSQL简单入门: 查询库名称:show databases; information_schema mysql test 2:创建库 create database 库名 DEFAULT CHAR ...

  3. Okio 1.9简单入门

    Okio 1.9简单入门 Okio库是由square公司开发的,补充了java.io和java.nio的不足,更加方便,快速的访问.存储和处理你的数据.而OkHttp的底层也使用该库作为支持. 该库极 ...

  4. emacs最简单入门,只要10分钟

    macs最简单入门,只要10分钟  windwiny @2013    无聊的时候又看到鼓吹emacs的文章,以前也有几次想尝试,结果都是玩不到10分钟就退出删除了. 这次硬着头皮,打开几篇文章都看完 ...

  5. 【java开发系列】—— spring简单入门示例

    1 JDK安装 2 Struts2简单入门示例 前言 作为入门级的记录帖,没有过多的技术含量,简单的搭建配置框架而已.这次讲到spring,这个应该是SSH中的重量级框架,它主要包含两个内容:控制反转 ...

  6. Docker 简单入门

    Docker 简单入门 http://blog.csdn.net/samxx8/article/details/38946737

  7. Springmvc整合tiles框架简单入门示例(maven)

    Springmvc整合tiles框架简单入门示例(maven) 本教程基于Springmvc,spring mvc和maven怎么弄就不具体说了,这边就只简单说tiles框架的整合. 先贴上源码(免积 ...

  8. git简单入门

    git简单入门 标签(空格分隔): git git是作为程序员必备的技能.在这里就不去介绍版本控制和git产生的历史了. 首先看看常用的git命令: git init git add git comm ...

  9. 程序员,一起玩转GitHub版本控制,超简单入门教程 干货2

    本GitHub教程旨在能够帮助大家快速入门学习使用GitHub,进行版本控制.帮助大家摆脱命令行工具,简单快速的使用GitHub. 做全栈攻城狮-写代码也要读书,爱全栈,更爱生活. 更多原创教程请关注 ...

随机推荐

  1. [翻译] JTCalendar

    JTCalendar JTCalendar is a calendar control for iOS easily customizable. JTCalendar 是一个很容易定制的日历的控件. ...

  2. Session管理

    request.session.set_expiry(10) #设置10s后session失效request.session.get_expire_at_browser_close() #查看sess ...

  3. Linux 用户和用户组详解

    用户分类 超级用户:UID范围 0 root用户:uid=0(root) gid=0(root) groups=0(root) 普通用户:由管理员创建,UID范围(500-65535) --> ...

  4. windows 查看端口号,杀进程

    查看端口号: 开始--运行--cmd netstat –and 杀进程: windows任务管理器         查看--显示列-PID 相关知识: 一台机器的80端口被httpd (apache) ...

  5. Element对象 常用属性与常用方法

    常用属性 .children 子元素列表 .childElementCount 子元素数量 .firstElementChild 第一个子元素 .lastElementChild 最后一个子元素 .c ...

  6. 【转】【Flex】FLEX 学习网站分享

    [转:http://hi.baidu.com/tanghecaiyu/item/d662fbd7f5fbe02c38f6f764 ] FLEX 学习网站分享 http://blog.minidx.co ...

  7. 跟我一起阅读Java源代码之HashMap(一)

    最近闲的很,想和大家一起学习并讨论下Java的一些源代码以及其实现的数据结构, 不是什么高水平的东西,有兴趣的随便看看 1. 为什么要用Map,以HashMap为例 很多时候我们有这样的需求,我们需要 ...

  8. sort与sorted

    Python list内置sort()方法用来排序,也可以用python内置的全局sorted()方法来对可迭代的序列排序生成新的序列. 1.list.sort()方法仅被定义在list中,相反地so ...

  9. NYOJ-171 聪明的kk 填表法 普通dp

    题目链接: http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=171 聪明的kk 时间限制:1000 ms  |  内存限制:65535 KB 难 ...

  10. iredmail 设置

    一些问题和修改 1.收邮件很慢安装完毕后,测试会发现 发送邮件都是秒到,但收邮件特别慢 长达十几分钟,这是因为iredmail的灰名单规则导致的(需要外部邮箱进行3次投递才接收,防止垃圾邮件),禁用灰 ...