对博弈的认知,及刷题总结
2016-03-11 22:17
351 查看
博弈主要有两种,一种是bash博弈,另一种是nim博弈。
对于巴士博弈,基本定义见百度文库,其基本题目类型是:只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。
最简单的题目见杭电2188
2188,杭电2149,杭电1846都是较为简单的巴士博弈题目。而杭电1517和2897,则相对有些变化,因为它的类型从区间【1,n】变成了【m,n】,但是其本质上还是找临界点,如果对巴士博弈理解了,就不会觉得很难了。这类题目主要是根据临界点判断是先手赢还是后手赢,然后扩展一下,就是最后一次抓的个数。
妮姆博奕则是对几堆“石子”取,直到取完。基本概念见nim游戏,基本题目类型是:有若干堆石子,每堆石子的数量都是有限的,合法的移动是“选择一堆石子并拿走若干颗(不能不拿)”,如果轮到某个人时所有的石子堆都已经被拿空了,则判负(因为他此刻没有任何合法的移动)。杭电题目有1849、1850等等,一般都是异或运算(虽然我也不知道为什么用异或运算),然后再加上什么限制条件什么的。
ans^=x 为循环算出最后结果是否为0,然后再根据题目条件完善代码即可!
待完善……
对于巴士博弈,基本定义见百度文库,其基本题目类型是:只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。
最简单的题目见杭电2188
2188,杭电2149,杭电1846都是较为简单的巴士博弈题目。而杭电1517和2897,则相对有些变化,因为它的类型从区间【1,n】变成了【m,n】,但是其本质上还是找临界点,如果对巴士博弈理解了,就不会觉得很难了。这类题目主要是根据临界点判断是先手赢还是后手赢,然后扩展一下,就是最后一次抓的个数。
妮姆博奕则是对几堆“石子”取,直到取完。基本概念见nim游戏,基本题目类型是:有若干堆石子,每堆石子的数量都是有限的,合法的移动是“选择一堆石子并拿走若干颗(不能不拿)”,如果轮到某个人时所有的石子堆都已经被拿空了,则判负(因为他此刻没有任何合法的移动)。杭电题目有1849、1850等等,一般都是异或运算(虽然我也不知道为什么用异或运算),然后再加上什么限制条件什么的。
ans^=x 为循环算出最后结果是否为0,然后再根据题目条件完善代码即可!
待完善……
相关文章推荐
- C#的序列化和反序列化 TEST -XML
- 分布式消息系统RocketMQ
- CodeForces-630 I. Parking Lot【排列组合】
- 正则表达式
- Linux 字符设备驱动开发基础(三)—— read()、write() 相关函数解析
- cocos2dx 物理按键
- python2016-03-11
- Java第一次作业参考代码
- 形态学开操作与闭操作
- 单例模式及C++实现代码
- 人生如戏,切莫自欺欺人!
- 单片机的拉电流和灌电流
- 关于百度地图SDK联网初始化的一个坑
- Oracle之RMAN数据库在非归档模式下的备份和恢复
- C/C++学习笔记
- cocos2dx 加速度传感器
- LCIS详解
- android源码设计模式解析与实战 读书笔记 2 单例模式(下)
- 二柱子3单元测试
- 海量数据处理技术学习