题意:给一个有向图,然后个m颗石头放在图上的几个点上,每次只能移动一步,如果不能移动者败

思路:dfs打表sg函数,然后求异或和

代码:

#include<queue>
#include<cstring>
#include<set>
#include<map>
#include<stack>
#include<cmath>
#include<vector>
#include<cstdio>
#include<iostream>
#include<algorithm>
#define eps 1e-9
typedef long long ll;
const int maxn = 1000 + 10;
const int seed = 131;
const ll MOD = 1e9 + 7;
const int INF = 0x3f3f3f3f;
using namespace std;
vector<int> G[maxn];
int in[maxn], n;
int s[maxn], sg[maxn];
void dfs(int u){if(G[u].size() == 0){sg[u] = 0;return;}for(int i = 0; i < G[u].size(); i++){int v = G[u][i];if(sg[v] == -1)dfs(v);}memset(s, 0, sizeof(s));for(int i = 0; i < G[u].size(); i++){int v = G[u][i];s[sg[v]] = 1;}for(int i = 0; i < maxn; i++){if(!s[i]){sg[u] = i;return;}}
}
int main(){while(~scanf("%d", &n)){memset(in, 0, sizeof(in));memset(sg, -1, sizeof(sg));for(int i = 0; i <= n - 1; i++){int x, to;G[i].clear();scanf("%d", &x);while(x--){scanf("%d", &to);G[i].push_back(to);in[to]++;}}for(int i = 0; i <= n - 1; i++){if(!in[i]){dfs(i);}}int m;while(scanf("%d", &m) && m){int ans = 0, x;while(m--){scanf("%d", &x);ans ^= sg[x];}if(ans == 0) printf("LOSE\n");else printf("WIN\n");}}return 0;
}

转载于:https://www.cnblogs.com/KirinSB/p/9674738.html

POJ 2425 A Chess Game(有向图SG函数)题解相关推荐

  1. (转载)--SG函数和SG定理【详解】

    在介绍SG函数和SG定理之前我们先介绍介绍必胜点与必败点吧. 必胜点和必败点的概念: P点:必败点,换而言之,就是谁处于此位置,则在双方操作正确的情况下必败. N点:必胜点,处于此情况下,双方操作均正 ...

  2. 组合博弈游戏 - SG函数和SG定理

    转载来自:http://blog.csdn.net/luomingjun12315/article/details/45555495 在介绍SG函数和SG定理之前我们先介绍介绍必胜点与必败点吧. 必胜 ...

  3. 组合游戏 - SG函数和SG定理

    在介绍SG函数和SG定理之前我们先介绍介绍必胜点与必败点吧. 必胜点和必败点的概念: P点:必败点,换而言之,就是谁处于此位置,则在双方操作正确的情况下必败. N点:必胜点,处于此情况下,双方操作均正 ...

  4. SG函数和SG定理【详解】

    在介绍SG函数和SG定理之前我们先介绍介绍必胜点与必败点吧. 必胜点和必败点的概念: P点:必败点,换而言之,就是谁处于此位置,则在双方操作正确的情况下必败. N点:必胜点,处于此情况下,双方操作均正 ...

  5. 博弈论(Nim游戏、有向图游戏之SG函数)

    这里写目录标题 经典NIM游戏 Nim游戏属于公平组合游戏ICG 有向图游戏(SG函数) Mex运算 SG函数 单个有向图(一堆石子) 求SG值(记忆化递归) 有向图游戏的和 ,(多个有向图(多堆石子 ...

  6. NIM数字游戏 SG函数 有向图博弈 学习记录

    写在前面:很早之前我就想写一写博弈论的学习记录了.本篇文章记录了我在学习博弈论初步时的顺序,现在网络上的博弈论资料大多都是从SG函数开始讲解,而我谜一样的学习方法让我对博弈论初步有了不同的理解过程,所 ...

  7. *【HDU - 1517】【POJ - 2505】A Multiplication Game(博弈,递推找规律或SG函数)

    题干: Stan and Ollie play the game of multiplication by multiplying an integer p by one of the numbers ...

  8. 2016多校联合训练1 B题Chess (博弈论 SG函数)

    题目大意:一个n(n<=1000)行,20列的棋盘上有一些棋子,两个人下棋,每回合可以把任意一个棋子向右移动到这一行的离这个棋子最近的空格上(注意这里不一定是移动最后一个棋子),不能移动到棋盘外 ...

  9. 博弈论与sg函数入门

    记录一点结论性的东西,推导见百度吧. 首先博弈的前提是双方"绝对理智". 一般的胜负博弈游戏来说,有以下几点:(注意必胜必败是针对这回合操作的人) 所有终结状态为必败点(比如五子棋 ...

最新文章

  1. python 数据库查询结果邮件提醒_Python实现的查询mysql数据库并通过邮件发送信息功能...
  2. Java主要知识结构
  3. (oracle)二、创建数据库
  4. 开发人员学Linux(3):CentOS7中安装JDK8和Tomcat8
  5. java set第n位_Java学习路线:float在内存中的存储
  6. linux errno 线程,Linux errno 错误对照表
  7. java高并发抢单编程模型_Java高并发模型
  8. 2019-05-18 操作系统概论
  9. MongoDB 的分片技术
  10. Python爬虫之Scrapy框架结构
  11. HTML + CSS + JavaScript 两小时快速入门教程
  12. python代码实现蜡笔小新
  13. 永恒之蓝--Windows7
  14. 什么是kvo和lvc
  15. PostgreSQL XMAX深入探究
  16. 03-SQLPlus的常用命令和使用
  17. csrf(csrf请求非法是什么意思)
  18. github服务器在美国吗_GitHub上的政府布道者介绍美国开放技术
  19. 计算机组成存储单元地址分配,【计算机组成原理】主存中存储单元地址的分配/大小端方式/按字节(字)寻址云笙菇凉的博客-...
  20. rdma oracle,NFS Over RDMA

热门文章

  1. 怎么把文件上传云服务器上,如何把文件上传到云服务器上
  2. java mdpi_如何使用drawable兼容所有屏幕尺寸(idpi,mdpi,hdpi,xhdpi,xxhdpi)
  3. redis 缓存模式
  4. mysql 字段操作
  5. java 字符串编码
  6. scrapy setting
  7. linux 打开大文件命令,linux查看大文本文件命令
  8. 如何用python创建文件_如何在python中编辑文件并创建一个新的文件?
  9. list怎么取数据_MongoDB 自动过滤重复数据
  10. Spring Boot学习总结(7)——SpringBoot之于Spring优势