HDOJ-1536 S-Nim
2016-04-04 11:14
375 查看
当我们面对由 n 个游戏组合成的一个游戏时,只需对于每个游戏找出求它的每个局面的 SG 值的方法,就可以把这些 SG 值全部看成 Nim 的 石子堆,再用异或进行求解
#include <iostream> #include <algorithm> #include <cstring> #include <cmath> #include <vector> #include <cstdio> #define maxn 10006 using namespace std; int dp[10005], num[105], d[105]; void Init(int k){ for(int i = 0; i <= 10000; i++){ memset(d, 0, sizeof(d)); for(int j = 0; j < k; j++){ if(i >= num[j]){ d[dp[i-num[j]]] = 1; } } for(int j = 0; j < 105; j++){ if(d[j] == 0){ dp[i] = j; break; } } } } int main(){ //freopen("in.txt", "r", stdin); int k; while(cin >> k && k){ for(int i = 0; i < k; i++) scanf("%d", num+i); Init(k); int t; cin >> t; while(t--){ int m, a, s = 0; scanf("%d", &m); for(int i = 0; i < m; i++){ scanf("%d", &a); s ^= dp[a]; } if(s == 0) cout << "L"; else cout << "W"; } cout << endl; } return 0; }
相关文章推荐
- 1010. 一元多项式求导 (25)——做题纪录
- 【poj2728】Desert King
- 关于 iOS的 App 项目开发的流程
- 用TP对Oracle数据库过程问题
- 《MySQL必知必会》读书笔记
- 【Qt】QDebug
- POJ3050-Hopscotch
- 求字符串中的最长回文子串
- 第五周的学习进度条
- D3绘制水平柱状图
- javascript如何实现360度全景照片问题汇总
- [0.4]面向表达式编程之美
- hdu4585 shaolin【 Treap模板题】
- poj2528 Mayor's Posters
- 左右最值最大差
- Codeforces Round #331 (Div. 2) .D - Wilbur and Trees, 枚举情况的DFS
- Android 属性动画(Property Animation) 完全解析 (下)
- Java中的ReentrantLock和synchronized两种锁定机制的对比
- 总结整理 -- ruby系列
- [android] notification入门