vijos 1655 萌萌的糖果博弈 博弈
背景
用糖果来引诱小朋友学习是最常用的手法,绵羊爸爸就是用糖果来引诱萌萌学习博弈的。
描述
他把糖果分成了两堆,一堆有A粒,另一堆有B粒。他让萌萌和他一起按照下面的规则取糖果:每次可以任意拿走其中一堆糖果;如果这时候另一堆糖果数目多于1粒,就把它任意分成两堆,否则就把剩下的一粒糖果取走并获得这次博弈的胜利。胜利者将获得所有的糖果。萌萌想要得到所有的糖果,而绵羊爸爸想把糖果留下以便下一次利用。现在由萌萌先取糖果,旁观的小朋友们想知道萌萌是否有必胜策略。
格式
输入格式
本题有多组测试数据(不超过100组)。每组数据包括两行,第一行为A,第二行为B。1 ≤ A,B ≤ 2^127。输入数据以一个 -1 结束。
输出格式
每组数据对应一行输出。如果萌萌获胜则输出"MengMeng",否则输出"SheepDaddy"(不包括引号)。
题意:有两堆石子,任意拿一堆,如果另一堆剩下1则直接胜利,如果大于1,则可以任意分成两堆,问谁必胜。
思路:因为有两堆石子,如果直接考虑拿哪堆有点麻烦,所以转化一下,考虑拿走后剩下一堆石子的分法是否有必胜策略。
首先先手剩下了
1 = 1 N 先手必胜
2 = 1 | 1 N->P 先手必败
3 = 1 | 2 N->P 先手必败
4 = 2 | 2 P->N 先手必胜
5 = 2 | 3 P->N 先手必胜
这样发现,只要先手能分剩下石子为两个必败态,则它一定为必败态,那么对于先手来说就是必胜态,反之只要分出一个必胜态,那么对于先手来说这个分法一定是必败态。
这样继续分析,发现5是个循环节,那么根据找到的规律,两堆中只要有一个模5为1,4,0的就是先手必胜态。
/** @Date : 2016-12-14-21.41
* @Author : Lweleth (SoungEarlf@gmail.com)
* @Link : https://github.com/
* @Version :
*/
#include<bits/stdc++.h>
#define LL long long
#define PII pair
#define MP(x, y) make_pair((x),(y))
#define fi first
#define se second
#define PB(x) push_back((x))
#define MMG(x) memset((x), -1,sizeof(x))
#define MMF(x) memset((x),0,sizeof(x))
#define MMI(x) memset((x), INF, sizeof(x))
using namespace std; const int INF = 0x3f3f3f3f;
const int N = 1e5+20;
const double eps = 1e-8; int main()
{
char a[1000], b[1000];
while(~scanf("%s", a))
{
if(a[0] == '-')
break;
scanf("%s", b);
int x = strlen(a);
int y = a[x - 1] - '0';
x = strlen(b);
int z = b[x - 1] - '0';
if(y % 5 == 1 || y % 5 == 4 || y % 5 == 0)
printf("MengMeng\n");
else if(z % 5 == 1 || z % 5 == 4 || z % 5 == 0)
printf("MengMeng\n");
else
printf("SheepDaddy\n"); }
return 0;
}
//剩下的数为无论先手怎么拆分都: 1Y 2N 3->~(1|2)N 4->~(2|2)Y 5->~(2|3)Y 6->~(3|3)Y 7N ...
//模5 两个数中有 余1 4 0 为必胜 否则必败
vijos 1655 萌萌的糖果博弈 博弈的更多相关文章
- Vijos1655 - 萌萌的糖果博弈
Portal Description 两人轮流操作两堆初始数量分别为\(a,b(a,b\leq2^{127})\)的石子.每人每次进行如下操作: 取走一堆石子,并将另一堆分成两个非零堆. 如果另一堆只 ...
- hdu 2516(Fibonacci博弈博弈)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2516 Problem Description 1堆石子有n个,两人轮流取.先取者第1次可以取任意多个, ...
- hdu 3389 阶梯博弈
题意:1-N带编号的盒子,当编号满足A>B && A非空 && (A + B) % 3 == 0 && (A + B) % 2 == 1则可以从A ...
- 博弈dp入门 POJ - 1678 HDU - 4597
本来博弈还没怎么搞懂,又和dp搞上了,哇,这真是冰火两重天,爽哉妙哉. 我自己的理解就是,博弈dp有点像对抗搜索的意思,但并不是对抗搜索,因为它是像博弈一样,大多数以当前的操作者来dp,光想是想不通的 ...
- 【Mark】博弈类题目小结(HDU,POJ,ZOJ)
转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?viewmode=contents by---cxlove 首先当然要献上一些非常好的学习资料: 基础博弈的小 ...
- 靠!老师居然叫我们去写博弈论!!!结果写了一个晚上的博弈论,简直要死QAQ。。。发发博客休息一下。。。TAT。。。
萌萌的糖果博弈 题目描述: 用糖果来引诱小朋友学习是最常用的手法,绵羊爸爸就是用糖果来引诱萌萌学习博弈的.他把糖果分成了两堆,一堆有A粒,另一堆有B粒.他让萌萌和他一起按照下面的规则取糖果:每次可以任 ...
- hdu 3389 Game 博弈论
思路: 其本质为阶梯博弈; 阶梯博弈:博弈在一列阶梯上进行,每个阶梯上放着自然数个点,两个人进行阶梯博弈... 每一步则是将一个集体上的若干个点( >=1 )移到前面去,最后没有点可以移 ...
- 博弈论BOSS
基础博弈的小结:http://blog.csdn.net/acm_cxlove/article/details/7854530 经典翻硬币游戏小结:http://blog.csdn.net/acm_c ...
- Vijos 1004 伊甸园日历游戏 博弈
描述 Adam和Eve玩一个游戏,他们先从1900.1.1到2001.11.4这个日期之间随意抽取一个日期出来.然后他们轮流对这个日期进行操作: 1 : 把日期的天数加1,例如1900.1.1变到19 ...
随机推荐
- selenium实现文件上传方法汇总(AutoIt、win32GUI、sengkeys)---基于python
在使用selenium进行UI自动化测试时,经常会遇到一个关于本地文件上传的问题,解决此问题一般分两种情况: 1. 元素标签为input 2.非input型上传 下面我们分别对着两种情况进行实例分析 ...
- Thunder团队第一周 - Scrum会议3
Scrum会议3 小组名称:Thunder 项目名称:在线考试系统 Scrum Master:杨梓瑞 工作照片: 参会成员: 王航:http://www.cnblogs.com/wangh013/ 李 ...
- java多线程三之线程协作与通信实例
多线程的难点主要就是多线程通信协作这一块了,前面笔记二中提到了常见的同步方法,这里主要是进行实例学习了,今天总结了一下3个实例: 1.银行存款与提款多线程实现,使用Lock锁和条件Condition. ...
- About Dynamic Programming
Main Point: Dynamic Programming = Divide + Remember + Guess 1. Divide the key is to find the subprob ...
- 从电梯问题,看c和c++之间的区别(有点懂了)错觉错觉
磕磕碰碰的也相继用c和c++构造了不少的电梯了.虽然对自我的表现不满意,但是总体来说还是有一定的收获的,对于c和c++之间的区别感觉也摸到了一点点门道了... 用c语言构造电梯的步骤: 第一步: 分析 ...
- Java 二维数组
在 Java 中,二维数组与一维数组一样,但是不同于 C 中的二维数组: 1. 在 Java 中,二维数组可以看成是以数组为元素的数组,例如: int a[][] = {{1,2},{3,4,5,6 ...
- react项目开发入门
v16.2.0 在html头部引入react相关js文件 <!-- react核心库--><script src="../static/react/react.produc ...
- 网络控制API 路由表 arp表 包括tcp的这些参数都是从哪里设置
路由表查看 arp缓存 都是走的什么接口?
- SQL SERVER 存储过程中SELECT 返回值如何赋值给变量
今天在处理一个问题时,使用到一个存储过程,是用于更新并获取最新ID的.在使用过程中,需要获取到这个ID并赋值给变量,结果用EXEC @ID = 存储过程的方式获取失败了.具体情况如下: 为了还原整个情 ...
- 异步执行任务SimpleAsyncTaskExecutor详解
SimpleAsyncTaskExecutor 异步执行用户任务的SimpleAsyncTaskExecutor.每次执行客户提交给它的任务时,它会启动新的线程,并允许开发者控制并发线程的上限(con ...