博弈论--巴什博弈——HDU1846
来源:互联网 发布:网络广播系统拓扑图 编辑:程序博客网 时间:2024/06/09 17:51
/*巴什博弈:HDU--1846*/
# include<iostream>
using namespace std;
int main()
{
int t;
int n,m;
cin>>t;
while(t--)
{
cin>>n>>m;
if(n%(m+1)==0) cout<<"second"<<endl;/*此处的n%(m+1)的意思是如果取余的结果不是0,就是先者为胜,否则就是后者为胜*/
else cout<<"first"<<endl;
}
return 0;
}
/*巴什博弈算法总结:
问题描述基本模型:
只有一堆n 个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m 个。最后取光者得胜。
给你n,如何判断先手还是后手赢???
算法过程分析:
特殊的2种情况:
1 当n<m时,很显然是先手赢
2 当n=m+1时,不论先手取多少个(但必须是小于或等于m的),总是不能一次取完,所以只能是后手赢
如果总的物品数有 n=(m+1)*r+s个(其中:s<=m,r为自然数),先手先取s个,后手取k个(k<=m),先手只要再取(m+1-k)个
最终剩下的是(m+1)*(r-1)个也即是(m+1)的整数倍,这样无论后手怎么取,都不会把剩下的一次性取完,最终只会是先手获胜
总之就是:让最后剩下物品数是(m+1)的倍数即可
*/
# include<iostream>
using namespace std;
int main()
{
int t;
int n,m;
cin>>t;
while(t--)
{
cin>>n>>m;
if(n%(m+1)==0) cout<<"second"<<endl;/*此处的n%(m+1)的意思是如果取余的结果不是0,就是先者为胜,否则就是后者为胜*/
else cout<<"first"<<endl;
}
return 0;
}
/*巴什博弈算法总结:
问题描述基本模型:
只有一堆n 个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m 个。最后取光者得胜。
给你n,如何判断先手还是后手赢???
算法过程分析:
特殊的2种情况:
1 当n<m时,很显然是先手赢
2 当n=m+1时,不论先手取多少个(但必须是小于或等于m的),总是不能一次取完,所以只能是后手赢
如果总的物品数有 n=(m+1)*r+s个(其中:s<=m,r为自然数),先手先取s个,后手取k个(k<=m),先手只要再取(m+1-k)个
最终剩下的是(m+1)*(r-1)个也即是(m+1)的整数倍,这样无论后手怎么取,都不会把剩下的一次性取完,最终只会是先手获胜
总之就是:让最后剩下物品数是(m+1)的倍数即可
*/
0 0
- 博弈论--巴什博弈——HDU1846
- hdu1846巴什博弈
- ACM-巴什博弈之Brave Game——hdu1846
- HDU1846之巴什博弈
- hdu1846(巴什博弈)
- HDU1846:Brave Game(巴什博弈)
- 巴什博弈(hdu1846,hdu2147,hdu2149)
- HDU1846:Brave Game(巴什博弈)
- hdu1846 Brave Game 巴什博弈
- 博弈论-巴什博弈
- 博弈论-巴什博弈
- B - Brave Game(hdu1846,巴什博弈基础)
- 巴什博弈 (例:HDU1846&HDU1847&HDU2188&HDU2149)
- 博弈论之巴什博弈
- 博弈论--2359: 巴什博弈?
- 博弈----hdu1846
- 博弈论——威佐夫博弈
- hdu1846 博弈论经典
- 任正非谈:华为会怎么失败,华为会怎么垮掉?
- 程序通用算法和库
- DVRRDK, EZSDK和DVSDK这三者有什么区别
- 将不知位数的数进行反转后输出
- 9个offer,12家公司,35场面试,从微软到谷歌
- 博弈论--巴什博弈——HDU1846
- 想你的唇你的美
- 【从零学习openCV】IOS7下的openCV开发起步(Xcode5.1.1&openCV2.49)
- android 2.3.6Gallary源码导入到Eclipse中编译
- 【Python】Python的类型转换
- Linux USB驱动详解
- thinkphp与ajax连接教程
- 中断方式与轮询方式比较
- android-Anmation动画详讲