HDU2188 && HDU2149 && HDU1846
来源:互联网 发布:荣耀v10网络制式 编辑:程序博客网 时间:2024/06/02 20:46
2188题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2188
2149题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2149
1846题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1846
两个题都倒过来想,假如现在募捐箱里面有n元钱,两个人每次至少取一元钱,最多取m元钱,最后一个取光的人为胜者,就是一个简单的巴什博弈。
第三个题本来就是倒着的。
巴什博弈:有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个,最后取光者得胜。
1.我们现在想想假如现在局面上就剩下了m + 1个物品,那么先手必输,自己想为什么。
2.现在推广到 n = k * ( m + 1)个物品,假设先手取 t个,那么后手只要保证每次都取 m + 1 - t个,那么最后还是转化到第一种情况。
3.如果 n = k * ( m + 1) + a ( 0 < a <= m) ,那么先手必胜了,因为只要先手取a个,就变成了第2种情况的后手,所以必胜!
代码:
2188
#include <cstdio>int main(){ int _; while(~scanf("%d",&_)) { while(_--) { int n,m; scanf("%d%d",&n,&m); if(n % (m + 1) == 0) printf("Rabbit\n"); else printf("Grass\n"); } } return 0;}
2149
#include <cstdio>int main(){ int m,n; while(~scanf("%d%d",&m,&n)) { if(m < n) { for(int i = m;i <= n;++i) { if(i == m) printf("%d",i); else printf(" %d",i); } printf("\n"); } else if(m % (n + 1) == 0) printf("none\n"); else { printf("%d\n",m % (n + 1)); } } return 0;}
1846
#include <cstdio>int main(){ int _; scanf("%d",&_); while(_--) { int n,m; scanf("%d%d",&n,&m); if(n % (m + 1) == 0) printf("second\n"); else printf("first\n"); } return 0;}
0 0
- HDU2188 && HDU2149 && HDU1846
- 巴什博奕小结 HDU2188 HDU1846 HDU2149
- 巴什博弈 (例:HDU1846&HDU1847&HDU2188&HDU2149)
- HDU_Steps8.2 博弈入门 HDU1846 HDU1847 HDU1848 HDU2149 HDU2188 HDU2147 HDU1907 HDU1851
- (博弈)hdu2188与hdu1846原理相同
- 巴什博弈(hdu1846,hdu2147,hdu2149)
- hdu2188
- 博弈(巴什博弈讲解及其应用)(hdu2149,hdu2188)
- Hdu1846 Brave Game && Hdu2188 悼念512汶川大地震遇难同胞——选拔志愿者
- hdu2149
- hdu2149
- hdu1846
- hdu1846
- hdu1846
- hdu1846
- HDU2188(巴什博奕)
- HDU2188(巴什博奕)
- hdu2188 java
- python命令行自动补全
- Problem C: 数组---求数组中的最大值
- 查找未公开的oracle初始化参数
- qt+evaluatejavascript
- 基本的算法思想
- HDU2188 && HDU2149 && HDU1846
- 打印100—200之间的素数及优化
- 编译ZermoMQ时修改rpath路径
- 用正确的方式写if语句——与零值作比较
- 将十进制转换为二进制和十六进制
- 输出一个数的二进制数的奇数序列和偶数序列(三种方法)
- Tomcat安装教程
- 可以一直接收键盘字符,并将大写转为小写,小写转为大写,数字不作处理
- C语言实现小游戏(一)