先看一个问题

HDU 3595 GG and MM (Every_SG博弈)

题目有N个游戏同时进行,每个游戏有两堆石子,每次从个数多的堆中取走数量小的数量的整数倍的石子。取最后一次的获胜。并且N个游戏同时进行,除非游戏结束,否则必须操作。

现在问题变成了,每次都必须在每个非空石子堆中选择。

这个问题的核心在于:

对于我们可以赢的单一游戏,我们一定要拿到这一场游戏的胜利!

所以,我们只需要考虑如何让我们必胜的游戏尽可能长的玩下去。

但是对手却不希望他必败的单一游戏玩的太久,这就是 Every-SG 游 戏不同于其他 SG 游戏的地方:一般的 SG 游戏只有胜与负之间的博弈, 而 Every-SG 游戏又添加了长与短之间的博弈,这使得 Every-SG 游戏更 有嚼头,更有味道。 

最后的定理是显然的,最大的单一游戏步数如果是奇数的话那么肯定是先手取得进行最后一步。否则一定是对手取走最后一个棋子。

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
#define N 1010 int dp[N][N]; int dfs(int p,int q)
{
if(p>q) swap(p,q);
if(p==)
{
dp[p][q] = ;
return ;//必败
}
int k = q/p;
int tp = q-p*k,tq = p;
int flag = dfs(q-p*k,p);
if(k==)
{
dp[p][q] = dp[tp][tq]+;
return flag^;
}
else
{
if(flag == )
{
dp[p][q] = dp[tp][tq]+;
}
else dp[p][q] = dp[tp][tq]+;
return ;
}
} int main() {
int n;
memset(dp,-,sizeof(dp));
while(cin>>n)
{
int mx = -;
for(int i=;i<n;i++)
{
int p,q;
cin>>p>>q;
dfs(p,q); mx = max( mx,dp[min(p,q)][max(p,q)] );
}
if( (mx&) ) printf("MM\n");
else printf("GG\n");
}
return ;
}

hdu3595

每一个可以移动的棋子都要移动——Every-SG 游戏的更多相关文章

  1. m个苹果放在n个筐里,每个筐至少一个,所有的筐都一样,有多少种放法

    package com.study; import java.io.BufferedReader; import java.io.IOException; import java.io.InputSt ...

  2. 对tomcat来说,每一个进来的请求(request)都需要一个线程,直到该请求结束。

    这段时间折腾了哈java web应用的压力测试,部署容器是tomcat 7.期间学到了蛮多散碎的知识点,及时梳理总结,构建良好且易理解的知识架构把它们组织起来,以备忘.对web应用开发者来说,我们很关 ...

  3. 对每一个IO操作的返回都要进行判断

    对每一个IO操作的返回都要进行判断 我们业务代码中有很多进行mysql.redis.文件.curl等的io操作,对每一个io操作我们都要对其返回值进行判断,然后做对应的处理,加日志信息或者抛出异常状态 ...

  4. python基础练习题(题目 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少)

    day13 --------------------------------------------------------------- 实例021:猴子偷桃 题目 猴子吃桃问题:猴子第一天摘下若干 ...

  5. 都闪开,不用任何游戏引擎,html也能开发格斗游戏

    html格斗游戏,对打游戏 不用引擎,不用画布canvas,不用任何库(包括jquery), 原生div+img组件,开发格斗游戏游戏教程视频已经上传 b站:https://www.bilibili. ...

  6. 关于类、方法、对象(实例):通过一个例子看一下self都做了哪些事情

    我们在定义一个类时,经常会在类的各个方法中看到self,那么在程序执行时self到底起了什么作用,什么时候要加self,这一点需要我们思考并好好理解.之前在学习时没有想这么多,加之用pycharm写代 ...

  7. 酒店订房系统:如何使用mysql来确定一个时间段内的房间都是可订的

    需要解决的问题: 假设一个用户选择了日期范围来进行订房,例如:2014-04-25至2014-04-30 ,那么现在问题就出现,你必须要确认在这个时间段内某个房间是否都是有房间的,如果没有那么当然不能 ...

  8. 编写自定义PE结构的程序(如何手写一个PE,高级编译器都是编译好的PE头部,例如MASM,TASM等,NASM,FASM是低级编译器.可以自定义结构)

    正在学PE结构...感谢个位大哥的文章和资料...这里先说声谢谢 一般高级编译器都是编译好的PE头部,例如MASM,TASM等一直都说NASM,FASM是低级编译器.可以自定义结构但是苦于无人发布相关 ...

  9. 求一个String 类型数组是不是都是回文,是返回1,否则返回-1

    package 回文; public class yhisHuiWen { public static void ishuiwen(String arr[]){ boolean flag=true;/ ...

随机推荐

  1. Google Analytics Premium VS Adobe Analytics

    在很久以前的互联网年代,Google收购了一家名为Urchin的公司,进而演化诞生了Google Analytics.当Goochin(Google / Urchin)首次亮相时,它被所有人称为“新的 ...

  2. UpdatePane中弹出框

    ScriptManager.RegisterClientScriptBlock(this.UpdatePanel21, typeof(UpdatePanel), "提示",&quo ...

  3. 深入Linux网络核心堆栈(对于netfilter的用法和讲解)

    http://blog.csdn.net/wswifth/article/details/5115475 注册一个hook函数是围绕nf_hook_ops数据结构的一个非常简单的操作,nf_hook_ ...

  4. JAVA基础知识之网络编程——-使用Proxy创建连接

    在前面的HTTP网络通信的例子中,使用了URLConnection conn = url.openConnection();连接网络, 如果改用URLConnection conn = url.ope ...

  5. SharePoint自动化系列——Add/Remove "Record" from items

    转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/ 目的:批量的将SharePoint items变成records或者将records变成普通的it ...

  6. 批发网加盟页面轮播Jquery jcarousellite插件效果

    Jquery jcarousellite 插件的好处 其中: 参数说明: btnPrev     string 上一个按钮的class名, 比如  btnPrev: ".prev" ...

  7. 华为S5700S配置总结

    需要使用通讯控制线缆连接电脑和交换机, 一头接交换机的Console口,一头接电脑(应该需要串口,没有的话得用USB转串口). 在PC机上运行终端仿真程序,设置终端通信参数为: 波特率为9600bit ...

  8. 使用js实现移动设备访问跳转到指定目录

    最近最项目的时候总会同时做pc站点跟手机站点,当手机访问的时候默认是看到pc站点的,需要在url上加上/mobile才能正常访问,这段代码是我同事分享给我的,还是蛮实用的. CODE function ...

  9. 求数组中的最小子数组,时间复杂度o(n),java

    石家庄铁道大学 信1405-1 班 唐炳辉 题目:给定一个整数数组,找到一个具有最小和的子数组.返回其最小和. 设计思路:两个变量 ,一个记录当前并入的数组的值,另外一个记录所算过得最大的数组的值,当 ...

  10. (1)若当前字符不是大于0的数字字符,则复制该字符于新字符串中; (2)若当前字符是一个数字字符,且它之后没有后继字符,则简单地将它复制到新字符串中; (3)若当前字符是一个大于0的数字字符,并且还有后继字符,设该数字字符的面值为n,将它的后继字符重复复制n+1次到新字符串中; (4)以上述一次变换为一组,在不同组之间另插入一个"_"用于分割(5))若字符串中包含有下划线'_',则变换为 \UL

    package b; import java.util.Scanner; public class Zifuchuan { public static void main(String[] args) ...