UVALive - 7042 The Problem to Make You Happy 博弈
题目大意:给你一个有向图, Bob 和 Alice 在做游戏,每轮他们走一步,当Bob 和 Alice在同一个点或者 Bob无路可走,Bob输,否则Alice输。
思路:因为在Bob赢的时候存在有环的情况, 但是在Bob输的时候的状态是明确的,我们利用Bob输的状态进行必胜比败态推演,
f[ i ][ j ][ k ] 表示Alice在i ,Bob在j 且轮到k走 Bob是必输还是必胜。
#include<bits/stdc++.h>
#define LL long long
#define fi first
#define se second
#define mk make_pair
#define pii pair<int, int>
#define y1 skldjfskldjg
#define y2 skldfjsklejg using namespace std; const int N = + ;
const int M = 1e5 + ;
const int inf = 0x3f3f3f3f;
const LL INF = 0x3f3f3f3f3f3f3f3f;
const int mod = 1e9 +; int n, m, B, A, deg[N], num[N][N][];
vector<int> edge[N], redge[N];
int f[N][N][], vis[N][N][]; struct node {
node(int x, int y, int d) {
this->x = x;
this->y = y;
this->d = d;
}
int x, y, d;
}; void init() {
for(int i = ; i < N; i++) {
edge[i].clear(); redge[i].clear();
} memset(deg, , sizeof(deg));
memset(vis, , sizeof(vis));
memset(num, , sizeof(num)); for(int i = ; i < N; i++)
for(int j = ; j < N; j++)
f[i][j][] = f[i][j][] = ; } void bfs() {
queue<node> que;
for(int i = ; i <= n; i++) {
for(int j = ; j <= n; j++) {
for(int k = ; k < ; k++) {
if(i == j) {
f[i][j][k] = ;
que.push(node(i, j, k));
vis[i][j][k] = ;
} else if(k == ) {
if(!edge[j].size()) {
f[i][j][k] = ;
que.push(node(i, j, k));
vis[i][j][k] = ;
}
}
}
}
} while(!que.empty()) {
node cur = que.front(); que.pop();
if(!cur.d) {
for(int i = ; i < redge[cur.y].size(); i++) {
int nxy = redge[cur.y][i];
if(vis[cur.x][nxy][]) continue;
num[cur.x][nxy][]++; if(num[cur.x][nxy][] == deg[nxy]) {
f[cur.x][nxy][] = ;
vis[cur.x][nxy][] = ;
que.push(node(cur.x, nxy, ));
} }
} else {
for(int i = ; i < redge[cur.x].size(); i++) {
int nxx = redge[cur.x][i];
if(vis[nxx][cur.y][]) continue; f[nxx][cur.y][] = ;
vis[nxx][cur.y][] = ;
que.push(node(nxx, cur.y, ));
}
}
}
} int main() {
int T; scanf("%d", &T);
for(int cas = ; cas <= T; cas++) {
init(); scanf("%d%d", &n, &m);
for(int i = ; i <= m; i++) {
int u, v; scanf("%d%d", &u, &v);
edge[u].push_back(v);
redge[v].push_back(u);
deg[u]++;
} scanf("%d%d", &B, &A); bfs(); printf("Case #%d: ", cas);
printf("%s\n", f[A][B][] ? "Yes" : "No");
}
return ;
} /*
*/
UVALive - 7042 The Problem to Make You Happy 博弈的更多相关文章
- UVALive - 7041 The Problem to Slow Down You (回文树)
https://vjudge.net/problem/UVALive-7041 题意 给出两个仅包含小写字符的字符串 A 和 B : 求:对于 A 中的每个回文子串,B 中和该子串相同的子串个数的总和 ...
- UVAlive 7041 The Problem to Slow Down You(回文树)
题目链接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show ...
- Uvalive 7037 The Problem Needs 3D Arrays(最大密度子图)
题意:给一段子序列,定义密度:子序列中的逆序对数/子序列的长度 求这个序列的对大密度. 分析:将序列中的每个位置视作点,逆序对\(<i,j>\)之间表示点i与点j之间有一条无向边.所以就转 ...
- Guardian of Decency(二分图)
Guardian of Decency Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Submi ...
- 爆零后的感受外加一道强联通分量HDU 4635的题解
今天又爆零了,又是又,怎么又是又,爆零爆多了,又也就经常挂嘴边了,看到这句话,你一定很想说一句””,弱菜被骂傻,也很正常啦. 如果你不开心,可以考虑往下看. 翻到E(HDU 4635 Strongly ...
- bzoj千题计划260:bzoj2940: [Poi2000]条纹
http://www.lydsy.com/JudgeOnline/problem.php?id=2940 SG 博弈入门推荐张一飞的<由感性认识到理性认识 ——透析一类搏弈游戏的解答过程> ...
- POJ2234 Matches Game 尼姆博弈 博弈论
http://poj.org/problem?id=2234 尼姆博弈(Nimm's Game) 指的是这样一个博弈游戏:有任意堆物品,每堆物品的个数是任意的,双方轮流从中取物品,每一次只能从一堆物品 ...
- A Boring Problem UVALive - 7676 (二项式定理+前缀和)
题目链接: I - A Boring Problem UVALive - 7676 题目大意:就是求给定的式子. 学习的网址:https://blog.csdn.net/weixin_37517391 ...
- Gym 101194D / UVALive 7900 - Ice Cream Tower - [二分+贪心][2016 EC-Final Problem D]
题目链接: http://codeforces.com/gym/101194/attachments https://icpcarchive.ecs.baylor.edu/index.php?opti ...
随机推荐
- each jquery
<div class="first"> <span>投保人数:</span> <input type="text" i ...
- MyBatis框架的使用及源码分析(三) 配置篇 Configuration
从上文<MyBatis框架中Mapper映射配置的使用及原理解析(二) 配置篇 SqlSessionFactoryBuilder,XMLConfigBuilder> 我们知道XMLConf ...
- Centos7下关于memcached的安装和简单使用
在这里,由于用编译安装memcached服务端过于复杂,因此我选用依赖管理工具 yum 来实现 memcached 的服务端安装: [root@localhost /]# yum install -y ...
- UOJ#179. 线性规划[模板]
传送门 http://uoj.ac/problem/179 震惊,博主竟然还不会线性规划! 单纯形实在学不会啊……背个板子当黑盒用…… 学(chao)了NanoApe dalao的板子 #includ ...
- python学习笔记(二)之python简单实践
1 安装python开发环境 Linux环境下自动安装好了python,可以通过以下命令更新到python最新版本. #echo "alias python=/usr/bin/python3 ...
- 【洛谷 P4008】 [NOI2003]文本编辑器 (Splay)
题目链接 \(Splay\)先练到这吧(好像还有道毒瘤的维护数列诶,算了吧) 记录下光标的编号,维护就是\(Splay\)基操了. 另外数据有坑,数据是\(Windows\)下生成了,回车是'\n\r ...
- ES6新增的let与const
1.const 声明常量,一旦声明必须立马赋值,否则报错 const PI = 3.14 const PI; //报错:Uncaught SyntaxError: Missing initialize ...
- GBK UTF-16 UTF-8 编码表
GBK UTF-16 UTF-8 ================== D2BB 4E00 E4 B8 80 一 B6A1 4E01 E4 B8 81 丁 C6DF 4E03 E4 ...
- 集合类---Map
Map常用的子类: 一.HashMap详解 1.特点 1)线程不安全.如果想要得到线程安全的HashMap,可以使用Collections的静态方法:Map map = Collections.sy ...
- BZOJ 3656: 异或 (组合数取模 CRT)
http://www.lydsy.com/JudgeOnline/problem.php?id=3656 大意:经过一通推导,问题变成求\[\binom N M \mod P\],其中N,M<= ...