题意:

  Bob和Alice在有向图内玩游戏,n个顶点,m条边。

  每人一颗棋子,初始位置分别是x,y。

  Bob先手,轮流操作,每次只能走一条有向边。

  结束条件: 1.不能操作的人输 2.两个棋子重合Bob输 3.游戏没有尽头Alice输

  问 Bob 能不能赢?

  2 <= n <= 100. 1 <= m <= n <= n*(n-1) 1 <= x , y <= n, x != y.

分析:

  设计状态[x][y][0/1] 表示Alice的棋子在x,Bob的棋子在y,0表示Alice下次先手,1表示Bob下次先手

  那么f[x][y][0/1]就表示该状态对于Bob来说是必胜状态还是必败状态

  考虑到Bob赢的特殊规则:游戏没有尽头

  那么对于我们所有的状态,我们可以初始默认全部都是1

  然后挑出那些刚开始显而易见的必败态(博弈树的叶子节点),从这些必败态开始扩展,能扩展到的节点都是必败态节点,这样用队列扩展结束后,每个点的胜败就知道了

  刚开始必败态:f[x][x][0/1](棋子重合Bob输) f[i][x][1] (x没有出边,Bob无法走子,输)

  考虑f[i][j][0]的转移:

    既然通过f[i][j][0]转移,就说明该状态一定是Bob的必败态,而且这个状态是Alice先手,那么说明这个状态的父节点是Bob先手

    Bob从f[i'][j][1]走到f[i][j][0],那么现在问题就是f[i'][j][1]是不是必败态呢?

    通过博弈的基础知识易得,Bob先手走如果走到这个必败节点,那么就必须是Bob能走到的节点全都是必败节点!

    在这里,我们可以把状态节点f[i'][j][1]的访问次数+1,表示f[i'][j][1]的一条出边对应的节点是必败节点

    注意f[i'][j][1]的出边数量是i'点的出度!所以,如果某次扩展,f[i'][j][1]的访问次数正好为i'点的度数,那么说明这个状态节点的所有的子节点都是Bob必败态,所以该节点也是Bob必败态

  考虑f[i][j][1]的转移

    既然通过f[i][j][1]转移,就说明该状态一定是Bob的必败态,而且这个状态是Bob先手,那么说明这个状态的父节点是Alice先手

    既然是Alice先手,能走到一个Bob必败态,那么Alice肯定要这样选择,所以直接f[i][j'][0]是必败态

  注意bfs过程中,对状态判重

  最后结果就是f[Alice][Bob][1]

UVALive7042(博弈论)的更多相关文章

  1. IT人生知识分享:博弈论的理性思维

    背景: 昨天看了<最强大脑>,由于节目比较有争议性,不知为什么,作为一名感性的人,就想试一下如果自己理性分析会是怎样的呢? 过程是这样的: 中国队(3人)VS英国队(4人). 1:李建东( ...

  2. [poj2348]Euclid's Game(博弈论+gcd)

    Euclid's Game Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9033   Accepted: 3695 Des ...

  3. 博弈论揭示了深度学习的未来(译自:Game Theory Reveals the Future of Deep Learning)

    Game Theory Reveals the Future of Deep Learning Carlos E. Perez Deep Learning Patterns, Methodology ...

  4. TYVJ博弈论

    一些比较水的博弈论...(为什么都没有用到那什么SG呢....) TYVJ 1140  飘飘乎居士拯救MM 题解: 歌德巴赫猜想 #include <cmath> #include < ...

  5. Codeforces 549C. The Game Of Parity[博弈论]

    C. The Game Of Parity time limit per test 1 second memory limit per test 256 megabytes input standar ...

  6. 【POJ】2234 Matches Game(博弈论)

    http://poj.org/problem?id=2234 博弈论真是博大精深orz 首先我们仔细分析很容易分析出来,当只有一堆的时候,先手必胜:两堆并且相同的时候,先手必败,反之必胜. 根据博弈论 ...

  7. 博弈论入门小结 分类: ACM TYPE 2014-08-31 10:15 73人阅读 评论(0) 收藏

    文章原地址:http://blog.csdn.net/zhangxiang0125/article/details/6174639 博弈论:是二人或多人在平等的对局中各自利用对方的策略变换自己的对抗策 ...

  8. poj 3710 Christmas Game 博弈论

    思路:首先用Tarjan算法找出树中的环,环为奇数变为边,为偶数变为点. 之后用博弈论的知识:某点的SG值等于子节点+1后的异或和. 代码如下: #include<iostream> #i ...

  9. hdoj 1404 Digital Deletions(博弈论)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1404 一看就是博弈论的题目,但并没有什么思路,看了题解,才明白 就是求六位数的SG函数,暴力一遍,打表 ...

随机推荐

  1. iOS-UI控件之UITableView(四)- cell数据刷新

    TableView- 数据刷新 数据刷新 添加数据 删除数据 更改数据 全局刷新方法(最常用) [self.tableView reloadData]; // 屏幕上的所有可视的cell都会刷新一遍 ...

  2. iOS游戏开发之UIDynamic

    iOS游戏开发之UIDynamic 简介 什么是UIDynamic UIDynamic是从iOS 7开始引入的一种新技术,隶属于UIKit框架 可以认为是一种物理引擎,能模拟和仿真现实生活中的物理现象 ...

  3. SQL Server调试存储过程

      一.   调试SQL   Server   2000 1.   设置帐户. <1>   在windows服务中找到MSSQLSERVER,双击弹出对话框. <2>   选择 ...

  4. Node.js——fs常用API

    文件状态 文件删除 文件信息 读取文件夹 文件的截取 创建文件夹 删除目录 文件监视,可以设置监视频率 文件重命名,可以用来剪切文件 注意 fs.open() fs.close() 这是最原始的读写方 ...

  5. JAVA 学习笔记 - 反射机制

    1.   JAVA反射机制的概念 2. 怎样实例化一个 Class对象 Class.forName(包名.类名); 对象.getClass(); 类.class; ================== ...

  6. (转)淘淘商城系列——发布dubbo服务

    http://blog.csdn.net/yerenyuan_pku/article/details/72758639 Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入, ...

  7. Laravel 的 API 认证系统 Passport 三部曲(二、passport的具体使用)

    GQ1994 关注 2018.04.20 09:31 字数 1152 阅读 1316评论 0喜欢 1 参考链接 Laravel 的 API 认证系统 Passport 三部曲(一.passport安装 ...

  8. Centos7 安装MongoDB的详细过程

    一.简介 MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关系数据库和非关系数据库之间的产品 ...

  9. anchor_target_layer层解读

    总结下来,用generate_anchors产生多种坐标变换,这种坐标变换由scale和ratio来,相当于提前计算好.anchor_target_layer先计算的是从feature map映射到原 ...

  10. vue工程化之项目引入jquery

    既然写项目,那么少不了用jq,那我们就引入进来吧 1.因为已经安装了vue脚手架,所以需要在webpack中全局引入jquery 打开package.json文件,在里面加入这行代码,jquery后面 ...