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 ...
随机推荐
- UVA10462:Is There A Second Way Left? (判断次小生成树)
Is There A Second Way Left? Description: Nasa, being the most talented programmer of his time, can’t ...
- 关闭nginx日志
在nginx.conf中将 access_log /dev/null; error_log /dev/null;
- bzoj 2434 [Noi2011]阿狸的打字机 AC自动机
[Noi2011]阿狸的打字机 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 4001 Solved: 2198[Submit][Status][D ...
- PIP 批量更新改为清华这边的镜像更新
之前pip批量更新的时候发现有些包无法更新,而且速度也特别慢,今天尝试了下清华的镜像,速度是真快 # coding=utf-8import pipfrom subprocess import call ...
- [C#] 类型学习笔记三:自定义值类型
既前两篇之后,这一篇我们讨论通过struct 关键字自定义值类型. 在第一篇已经讨论过值类型的优势,节省空间,不会触发Gargage Collection等等. 在对性能要求比较高的场景下,通过str ...
- jquery动画切换引擎插件 Velocity.js 学习02
案例实践: 第一页会以动画形式进入页面: 点击进入按钮时,第一页以动画消失,第二页以动画形式进入,同时四张图片也定义从小到大的动画形式: 第二页关闭按钮点击时,先是四张图片以缩小动画消失,然后第二页以 ...
- 南阳ACM 题目71:独木舟上的旅行 Java版
独木舟上的旅行 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 进行一次独木舟的旅行活动,独木舟可以在港口租到,并且之间没有区别.一条独木舟最多只能乘坐两个人,且乘客的总 ...
- 问题BeanFactory not initialized or already closed - call 'refresh' before access
问题BeanFactory not initialized or already closed - call 'refresh' before access 2016-08-23 14:22 8565 ...
- 【BZOJ4514】【SDOI2016】数字配对 [费用流]
数字配对 Time Limit: 10 Sec Memory Limit: 128 MB[Submit][Status][Discuss] Description 有 n 种数字,第 i 种数字是 ...
- javascript中数据属性与访问器属性
1.数据属性 Configurable:true|false,表示能否通过delete将属性删除,默认为true.当把属性的Configurable设置为false后,该属性不能通过delete删除, ...