nyoj135 取石子(二) Nimm博弈
思路:计算每堆石子的SG值,然后异或得到总的SG值,如果SG=0则输,否则赢。
每堆石子的SG值等于m%(n+1),可以自己推算一下。
AC代码
#include <cstdio> #include <cmath> #include <algorithm> #include <cstring> #include <utility> #include <string> #include <iostream> #include <map> #include <set> #include <vector> #include <queue> #include <stack> using namespace std; #define eps 1e-10 #define inf 0x3f3f3f3f #define PI pair<int, int> typedef long long LL; const int maxn = 100 + 5; int get_SG(int m, int n) { return m % (n+1); } int main() { int T, N, n, m; scanf("%d", &T); while(T--) { scanf("%d", &N); int res = 0; for(int i = 0; i < N; ++i) { scanf("%d%d", &m, &n); res ^= get_SG(m, n); } if(res) printf("Win\n"); else printf("Lose\n"); } return 0; }
如有不当之处欢迎指出!
nyoj135 取石子(二) Nimm博弈的更多相关文章
- 梦工厂实验室 取石子之fans 博弈
问题 D: 取石子之fans 时间限制: 1 Sec 内存限制: 64 MB提交: 57 解决: 26[提交][状态][讨论版] 题目描述 Yougth和Hrdv玩一个游戏,拿出n个石子摆成一圈, ...
- HDU 2516 取石子游戏(FIB博弈)
取石子游戏 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- 取石子游戏 BZOJ1874 博弈
小H和小Z正在玩一个取石子游戏. 取石子游戏的规则是这样的,每个人每次可以从一堆石子中取出若干个石子, 每次取石子的个数有限制,谁不能取石子时就会输掉游戏. 小H先进行操作,他想问你他是否有必胜策略, ...
- 【BZOJ1413】取石子游戏(博弈,区间DP)
题意:在研究过Nim游戏及各种变种之后,Orez又发现了一种全新的取石子游戏,这个游戏是这样的: 有n堆石子,将这n堆石子摆成一排.游戏由两个人进行,两人轮流操作,每次操作者都可以从最左或最右的一堆中 ...
- hdu 2516 取石子游戏 (Fibonacci博弈)
取石子游戏 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- nyoj888 取石子(九) 反Nimm博弈
这题就是反Nimm博弈--分析见反Nimm博弈 AC代码 #include <cstdio> #include <cmath> #include <algorithm&g ...
- {HDU}{2516}{取石子游戏}{斐波那契博弈}
题意:给定一堆石子,每个人最多取前一个人取石子数的2被,最少取一个,最后取石子的为赢家,求赢家. 思路:斐波那契博弈,这个题的证明过程太精彩了! 一个重要的定理:任何正整数都可以表示为若干个不连续的斐 ...
- nim3取石子游戏 (威佐夫博弈)
http://www.cnblogs.com/jackge/archive/2013/04/22/3034968.html 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有 ...
- 【POJ1067】取石子游戏 (威佐夫博弈)
[题目] Description 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可以在两堆中同时取走相同数量的 ...
随机推荐
- python_将多个小字符拼接成大字符?
案例: 下面有一个列表,如何把这个列表拼接成一个字符串? l = [1, 2, 3, 4, 'a', 'b', 'c'] 有哪些方法? 方法1: for进行迭代拼接 #!/usr/bin/python ...
- OpenCv函数学习(一)
Intel Image Processing Library (IPL) typedef struct _IplImage { int nSize; /* IplImage大小 */ int ID; ...
- Linux实践篇--linux软件的安装,更新与卸载
本文出处:http://www.cnblogs.com/lhj588/archive/2012/07/17/2595328.html,感谢作者分享. Linux常见的安装为tar,zip,gz,rpm ...
- 六、Html头部和元信息
前面整理的都是html常用到的标签,这里整理一下html的的头部和元信息标签. 定义html都的头部要写在<head>标签里面,一般他还包含如下一些标签: 1,<script> ...
- 【转】nagios 命令解释
nagios 命令解释 check_ssh 界面拼装参数格式如下共3个元素: 命令!端口!连接超时时间 ...
- 【转】sed单行命令大全
文本间隔: # 在每一行后面增加一空行 sed G # 将原来的所有空行删除并在每一行后面增加一空行. # 这样在输出的文本中每一行后面将有且只有一空行. sed '/^$/d;G' # 在每 ...
- [python] 2、python使用pyaudio进行录音,及其在python虚拟环境virtualenv中安装遇到的问题
1.pyaudio安装大背景 最近在做智能音箱,需要编写声音拾取代码,我先是百度两篇比较常见的用python进行录音的操作的文章: python写一个录音小程序:http://blog.csdn.ne ...
- 怎么使用IDEA
war 和 war exploded war部署首先通过IDEA生成.war工程文件,然后将WEB工程以包的形式上传到服务器,因此会替代服务器本来同名的web app项目. war exploded模 ...
- 基于JAVA实现的排序算法总结
常用的排序方法有:冒泡排序.快速排序.选择排序.插入排序.归并排序,除此之外,还有基数排序.鸡尾酒排序.桶排序.鸽巢排序.希尔排序等,这里着重介绍下前半段列举的几种常见方法的实现. 1. 冒泡排序法: ...
- 通过代码配置 Log4net来实现日志记录
通过代码来创建配置文件,优点看起来更为简洁,不过还得看需求吧,之前我博客也写了一篇通过读取不同的配置文件还实现配置不同日志类型. //记录异常日志数据库连接字符串 private const stri ...