uva 11927 - Games Are Important(组合游戏+记忆化)
来源:互联网 发布:淘宝虚拟物品发货 编辑:程序博客网 时间:2024/06/05 18:06
题目链接:uva 11927 - Games Are Important
题目大意:给出一张无环有向图,并给出每个节点上的石子数,每次操作可以选择一个石子,向下一个节点移动。两人轮流操作,直到不能操作为失败者。
解题思路:有了图之后,用记忆化的方式处理出每个节点的SG值,取所有石子数为奇数的节点的Nim和。
#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int maxn = 1005;int N, M, g[maxn][maxn], c[maxn], s[maxn];inline int SG(int u) { if (s[u] != -1) return s[u]; int vis[maxn]; memset(vis, 0, sizeof(vis)); for (int i = 0; i < c[u]; i++) { int tmp = SG(g[u][i]); vis[tmp] = 1; } int ret = -1; while (vis[++ret]); return s[u] = ret;}void init () { int u, v; memset(s, -1, sizeof(s)); memset(c, 0, sizeof(c)); for (int i = 0; i < M; i++) { scanf("%d%d", &u, &v); g[u][c[u]++] = v; } for (int i = 0; i < N; i++) s[i] = SG(i);}int main () { while (scanf("%d%d", &N, &M) == 2 && N + M) { init(); int ans = 0, u; for (int i = 0; i < N; i++) { scanf("%d", &u); if (u&1) ans ^= s[i]; } printf("%s\n", ans ? "First" : "Second"); } return 0;}
1 0
- uva 11927 - Games Are Important(组合游戏+记忆化)
- UVA 11927 - Games Are Important(sg函数)
- UVA - 11927 Games Are Important (SG)
- hdu4597play games【记忆化搜索】
- [UVa 1610] 聚会游戏(Party Games)
- UVA 1610-Party Games(聚会游戏)
- UVa 10651 Pebble Solitaire (DP 卵石游戏 记忆化搜索)
- 概率DP,记忆化搜索(纸牌游戏,uva 1637)
- why software are important
- "Friends" are so important.
- uva 11249 - Game(组合游戏)
- Memory Access Patterns Are Important
- sum游戏 Game of sum uva 10891 动态规划 备忘录(记忆化搜索)
- UVA 10561 Treblecross 组合游戏/SG定理
- uva 12293 - Box Game(组合游戏)
- uva 12163 - Addition-Subtraction Game(组合游戏)
- uva 10285 记忆化搜索
- uva 707(记忆化搜索)
- 关于IL中间语言的浅谈
- C#学习
- Android 使用Socket完成进程间通信
- mysqldump如何保证数据一致性
- Android Intent Flag的介绍
- uva 11927 - Games Are Important(组合游戏+记忆化)
- Python pychart画图几种常见的形式
- ios--导航控制器的基本概念
- Ubuntu10.10——配置DFS
- 在linux下面配置golang开发环境
- CPU相关的18个概念
- 南阳oj 161(威佐夫博弈)
- 泛型集合,非泛型集合
- CoreAnimation的基本用法