hdu 1524 A Chess Game 博弈
题目链接
给出一个有向无环图, 上面放有一些棋子, 两个人轮流移动棋子, 当一个人无法移动时, 算输。
求出每一个点的sg值, 异或就可以。出度为0的点sg值为0。
1 #include<bits/stdc++.h> 2 using namespace std; 3 #define pb(x) push_back(x) 4 #define ll long long 5 #define mk(x, y) make_pair(x, y) 6 #define lson l, m, rt<<1 7 #define mem(a) memset(a, 0, sizeof(a)) 8 #define rson m+1, r, rt<<1|1 9 #define mem1(a) memset(a, -1, sizeof(a)) 10 #define mem2(a) memset(a, 0x3f, sizeof(a)) 11 #define rep(i, a, n) for(int i = a; i<n; i++) 12 #define ull unsigned long long 13 typedef pair<int, int> pll; 14 const double PI = acos(-1.0); 15 const double eps = 1e-8; 16 const int mod = 1e9+7; 17 const int inf = 1061109567; 18 const int dir[][2] = { {-1, 0}, {1, 0}, {0, -1}, {0, 1} }; 19 const int maxn = 1e6+5; 20 int head[maxn], sg[1005], num; 21 struct node 22 { 23 int to, nextt; 24 }e[maxn]; 25 void init() { 26 mem1(head); 27 num = 0; 28 mem1(sg); 29 } 30 void add(int u, int v) { 31 e[num].to = v; 32 e[num].nextt = head[u]; 33 head[u] = num++; 34 } 35 int mex(int x) { 36 if(~sg[x]) 37 return sg[x]; 38 bool vis[1005]; 39 memset(vis, false, sizeof(vis)); 40 for(int i = head[x]; ~i; i = e[i].nextt) { 41 int v = e[i].to; 42 if(sg[v]==-1) 43 sg[v] = mex(v); 44 vis[sg[v]] = 1; 45 } 46 for(int i = 0; ; i++) 47 if(!vis[i]) 48 return i; 49 } 50 int main() 51 { 52 int n, x, y; 53 while(scanf("%d", &n)!=EOF) { 54 init(); 55 for(int i = 0; i<n; i++) { 56 scanf("%d", &x); 57 while(x--) { 58 scanf("%d", &y); 59 add(i, y); 60 } 61 } 62 while(scanf("%d", &x)&&x) { 63 int ans = 0; 64 for(int i = 0; i<x; i++) { 65 scanf("%d", &y); 66 ans ^= mex(y); 67 } 68 if(ans) { 69 puts("WIN"); 70 } else { 71 puts("LOSE"); 72 } 73 } 74 } 75 }
转载于:https://www.cnblogs.com/yohaha/p/5047239.html
hdu 1524 A Chess Game 博弈相关推荐
- hdu 1524 A Chess Game
http://acm.hdu.edu.cn/showproblem.php?pid=1524 博弈 用SG处理 #include<iostream> #include<cstdio ...
- hdu 1680 Cheesy Chess
hdu 1680 Cheesy Chess 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1680 题目大意:(好长的题啊- ...
- hdu 1907 Jone 尼姆博弈
题目:点击打开链接 John Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) T ...
- HDU 1525 - Euclid's Game ( 博弈 )
题意 Stan和Ollie玩游戏,Stan先手.给出两个数字,可以用大数减去小数的整数倍,要求不能减到小于0.谁先将一个数字减到0,谁获胜. 思路 博弈 假设 a > b 比赛的时候想到了关于a ...
- HDU - 1907 John(尼姆博弈变形)
题目链接:点击查看 题目大意:给出 n 堆石子,两个人轮流取,至少取一个,取到最后一个的人输 题目分析:尼姆博弈是取到最后一个的人获胜,这个题正好反着 一个很显然的奇异局势就是,每一堆的石子的个数都为 ...
- Good Luck in CET-4 Everybody! HDU - 1847 (巴氏博弈)
Good Luck in CET-4 Everybody! HDU - 1847 大学英语四级考试就要来临了,你是不是在紧张的复习?也许紧张得连短学期的ACM都没工夫练习了,反正我知道的Kiki和Ci ...
- HDU 1846 Brave Game 巴士博弈
博弈问题 巴士博弈 HDU1846<-点击此处进入链接 威尔夫博弈 HDU1527<-点击此处进入链接 斐波那契博弈 HDU2516<-点击此处进入链接 尼姆博弈 HDUXXX< ...
- HDU 2188 经典巴什博弈
1.问题模型:只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个,最后取光者得胜. 经典巴什博弈,参考到博客别人:点击打开链接 #include<iostream> ...
- HDU 1079 Calendar Game (博弈)
转载请注明出处,谢谢 http://blog.csdn.net/ACM_cxlove?viewmode=contents by---cxlove 题目:每次可以后移一个月,或者后移 ...
最新文章
- 清华大学教授:唐杰——深度分析:人工智能的下个十年
- Boost:fork联接的测试程序
- AlphaGo Zero又上《Science》封面!谷歌的人工智能又干翻人类了!
- [ZJOI2009]取石子游戏
- Nuxt使用cookies踩坑之设置axios的header
- 软件工程——概要设计
- 边缘计算的架构、挑战与应用
- 希望Online -- 前10级快速功略 + 怪物掉的装备
- 华硕天选一代无线网卡断网
- 如何提升自己的硬实力
- 基于Java的实时通信软件的设计(类似微信)
- php鼠标移过图片放大代码,鼠标移上去,图片会自动原地放大CSS写法
- loaderruner
- 无线wifi打印机服务器原理,一般无线打印机的连接方法及遇到常见故障解决办法...
- 硬币面值组合(上台阶)
- LaTeX大括号公式和一般括号总结
- 中国人民公安大学(PPSUC) 网络对抗技术作业-实验一
- Apache Tomcat 安全性指南
- 黑龙江农村初中生将推行电子学籍
- 解决xpath提取不规则网页的问题
热门文章
- 淘淘商城第24讲——实现商品类目的选择
- 51单片机的UART应用
- UPC-5594 Colorful Slimes(思维)
- 近50年前500部精品电影合集
- 《北风那个吹》大结局看完了
- 学习笔记-Volatility
- 回溯法解决01背包-非递归算法-效率低
- 虚拟机正在应用计算机设置,vmware虚拟机安装windows 10 technical preview卡在“正在准备设置50%”的解决办法-网络教程与技术
-亦是美网络...
- 医院招聘sass管理软件解决方案分析(2)
- Redux的核心知识