HDU 1846 Brave Game 巴士博弈
博弈问题
巴士博弈
HDU1846<-点击此处进入链接
威尔夫博弈
HDU1527<-点击此处进入链接
斐波那契博弈
HDU2516<-点击此处进入链接
尼姆博弈
HDUXXX<-点击此处进入链接
公平组合博弈
HDUxxxx<-点击此处进入链接
Brave Game
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 9376 Accepted Submission(s): 6228
Problem Description
十年前读大学的时候,中国每年都要从国外引进一些电影大片,其中有一部电影就叫《勇敢者的游戏》(英文名称:Zathura),一直到现在,我依然对于电影中的部分电脑特技印象深刻。
今天,大家选择上机考试,就是一种勇敢(brave)的选择;这个短学期,我们讲的是博弈(game)专题;所以,大家现在玩的也是“勇敢者的游戏”,这也是我命名这个题目的原因。
当然,除了“勇敢”,我还希望看到“诚信”,无论考试成绩如何,希望看到的都是一个真实的结果,我也相信大家一定能做到的~
各位勇敢者要玩的第一个游戏是什么呢?很简单,它是这样定义的:
1、 本游戏是一个二人游戏;
2、 有一堆石子一共有n个;
3、 两人轮流进行;
4、 每走一步可以取走1…m个石子;
5、 最先取光石子的一方为胜;
如果游戏的双方使用的都是最优策略,请输出哪个人能赢。
Input
输入数据首先包含一个正整数C(C<=100),表示有C组测试数据。
每组测试数据占一行,包含两个整数n和m(1<=n,m<=1000),n和m的含义见题目描述。
Output
如果先走的人能赢,请输出“first”,否则请输出“second”,每个实例的输出占一行。
Sample Input
2
23 2
4 3
Sample Output
first
second
本题是巴士博弈
此处应为题目描述 请见上文
用(n,m) 表示当前的局势,n表示剩下的石子个数,m为每次最多能够取的石子个数
先引出奇异局势的概念
奇异局势就是指当轮到甲取石子的时候局势(n,m)能确保甲无论怎么取石子都会输的局势
简单一句话 奇异局势就是谁碰谁输的局势(无论你怎样取石子)
要想赢就要想办法让最后剩在自己面前的石子<=m
而想要保证上一点,就必须保证输家最后一次拿石子的时候剩余m+1个这样无论输家怎么拿,都能确保剩在自己面前的石子<=m 且输家不可能一次拿光石子
现在我们还可以知道这样的等式**n=(m+1)*r+s**r为任意自然数,s为小于m的自然数
我们只要先将s个数的石子取走 等到对方取了k个石子过后在取m+1-k个石子就能保证最后剩到对方的就是m+1个石子 来确保赢
综上所述 我们可以知道只要面对(m+1)*r个石子就必输无疑
所以我们就能得到奇异局势就是剩余的石子个数是(m+1)*r的情况
所以只要判断当前是不是奇异局势就能判断出最好谁是赢家
附一下本题代码
#include <stdio.h>
using namespace std;
//巴士博弈
int main()
{int t;scanf("%d",&t);while(t--){int n,m;scanf("%d %d",&n,&m);if(n%(m+1)==0) //判断是奇异局势 所以先手一定输printf("second\n");elseprintf("first\n");}return 0;
}
HDU 1846 Brave Game 巴士博弈相关推荐
- 题解报告:hdu 1846 Brave Game(巴什博弈)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1846 Problem Description 十年前读大学的时候,中国每年都要从国外引进一些电影大片, ...
- HDU 1846 Brave Game 巴什博弈 SG打表
题目: http://acm.hdu.edu.cn/showproblem.php?pid=1846 题意: Problem Description 十年前读大学的时候,中国每年都要从国外引进一些电影 ...
- HDU 1846 Brave Game(巴什博弈)
Brave Game Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- hdu 1846 Brave Game 勇敢者的游戏 DP/巴什博弈
动态规划/简单博弈 Brave Game Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- HDU——1846 Brave Game(巴什博弈)
题目链接: #include<iostream> #include<cstdio> #include<cstring> #include<cmath> ...
- HDU 1846 Brave Game 【巴什博奕】
Brave Game Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- HDU - 1846 Brave Game
十年前读大学的时候,中国每年都要从国外引进一些电影大片,其中有一部电影就叫<勇敢者的游戏>(英文名称:Zathura),一直到现在,我依然对于电影中的部分电脑特技印象深刻. 今天,大家选 ...
- HDU 1846 Brave Game
简单的巴什博弈,仔细分析可知要使第二个人赢,只有当(m+1)是n的因子时才会成立,所以如小白说直接puts( "" )即可; #include<stdio.h> int ...
- HDU 1846 Brave Game(SG函数)
const int N=1e3+5;int n,m;int i,j,k;int sg[N];bool vis[N];void getSG() {ms(sg,0);for(int i=1;i<=n ...
最新文章
- 使用电脑一定得有良好的习惯呀!
- 开源的ESB产品列表信息
- 妈的我好像发现是哪出问题了
- 阿里云携领先SDN能力,亮相全球网络技术盛会ONS
- 阿里云安装git_Jenkins准备篇04阿里云Centos7服务器安装git
- [ERR]com.microsoft.sqlserver.jdbc.SQLServerException: 结果集没有当前行
- Windows Terminal 窗口/控制台切换快捷键总结
- 菜鸟学Struts2——Interceptors
- mysql安装updatecatalog_mysql安装与配置(linux)
- PHP设计模式——代理模式
- 第六章 第一个Linux驱动程序:统计单词个数
- 短视频解析技术原理,去水印原理分析整理汇总
- 台式机计算机怎么分割,台式机如何设置分屏
- 打造国云安全品牌,铸牢企业云上安全防线
- 关于获取安卓手机MAC地址的问题
- 自制ADK To Win11PE,加入原生explorer,初步修改注册表(图文1.1万字,很细) (2)
- 英文学习20180529
- 计算机网断IP修改,教你怎样更改电脑以太网的IP网段,网络设备必需品
- 序列化版本号(serialVersionUID)是做什么用的
- win7 64位虚拟机安装
热门文章
- Deep Mutual Learning
- 训练孩子思维能力的几种方法
- mybatis报错:argument type mismatch
- 在Ubuntu 18.04上安装man中文帮助手册的方法手记
- 那个职员建议他们去计算机博物馆英语,新目标英语九年级Unit 3 Section B录音(音频+文本+翻译)...
- 【火同学】OPencv学习笔记——滑动条的创建和使用
- JNI_OnLoad 回调Java_Java本地接口(JNI)编程指南和规范(第八章)
- hx-2.4g-rx-2_Rx-如果话务员可以讲话!
- 腾讯云服务器高性能云盘和SSD云硬盘区别及选择
- 联想服务器重装系统按f几,联想笔记本电脑重装系统按F几