一个关于SG的博弈游戏,对于某个堆有$M_i$和$L_i$,那么这个堆的SG值为

$$SG_i = M_i \%(L_i+1)$$

为什么这道题的$SG$函数就是这样子的呢?四个字:手算打表!!

$Let's \quad Review \quad The \quad Defination \quad Of \quad \quad SG \quad Function!!$

定义$SG(x)=mex(S)$,其中$S$是$x$的后继状态的$SG$函数值集合,$mex(S)$表示不在$S$内的最小非负的整数。

我们先取$L=5$来看一下

当$M=1$时,由于$1$的后继状态只有$0$,由sg定义可得$sg[1] =mex\{sg[0]\}=1$

,当$M=2$时,$2$的后继状态有$0,1$得到$sg[2]= mex\{sg[0],sg[1]\}=2$

当$M=3$时,$3$的后继状态有$0,1,2$有$sg[3] = mex\{sg[0],sg[1],sg[2]\}= mex\{0,1,2\}=3$

$……$

当$M=5$时,$5$的后继状态有$0,1,2,3,4$,有$sg[5]=5$

当$M=6$时,$6$的后继状态有$1,2,3,4,5$有$sg[6]=mex\{sg[1],sg[2]……sg[5]\}=0$

当$M=7$时,$7$的后继状态有$2,3,4,5,6$有$sg[7]=mex\{sg[2],sg[3],sg[4]……sg[6]\}=1$

如此一来 规律就好明显的有木有><.

最后贴上AC代码:

#include <iostream>
#include <cstdio>
using namespace std; int main() {
int m,l,n,sg,cas;
cin>>cas;
while(cas--){
sg = 0;
cin>>n;
while(n--) {
cin>>m>>l;
sg ^= m%(l+1);
}
if(!sg) puts("Yes");
else puts("No");
}
return 0;
}

HDU1851 A Simple Game的更多相关文章

  1. PHP设计模式(一)简单工厂模式 (Simple Factory For PHP)

    最近天气变化无常,身为程序猿的寡人!~终究难耐天气的挑战,病倒了,果然,程序猿还需多保养自己的身体,有句话这么说:一生只有两件事能报复你:不够努力的辜负和过度消耗身体的后患.话不多说,开始吧. 一.什 ...

  2. Design Patterns Simplified - Part 3 (Simple Factory)【设计模式简述--第三部分(简单工厂)】

    原文链接:http://www.c-sharpcorner.com/UploadFile/19b1bd/design-patterns-simplified-part3-factory/ Design ...

  3. WATERHAMMER: A COMPLEX PHENOMENON WITH A SIMPLE SOLUTION

    开启阅读模式 WATERHAMMER A COMPLEX PHENOMENON WITH A SIMPLE SOLUTION Waterhammer is an impact load that is ...

  4. BZOJ 3489: A simple rmq problem

    3489: A simple rmq problem Time Limit: 40 Sec  Memory Limit: 600 MBSubmit: 1594  Solved: 520[Submit] ...

  5. Le lié à la légèreté semblait être et donc plus simple

    Il est toutefois vraiment à partir www.runmasterfr.com/free-40-flyknit-2015-hommes-c-1_58_59.html de ...

  6. ZOJ 3686 A Simple Tree Problem

    A Simple Tree Problem Time Limit: 3 Seconds      Memory Limit: 65536 KB Given a rooted tree, each no ...

  7. 设计模式之简单工厂模式Simple Factory(四创建型)

    工厂模式简介. 工厂模式专门负责将大量有共同接口的类实例化 工厂模式可以动态决定将哪一个类实例化,不必事先知道每次要实例化哪一个类. 工厂模式有三种形态: 1.简单工厂模式Simple Factory ...

  8. HDU 5795 A Simple Nim 打表求SG函数的规律

    A Simple Nim Problem Description   Two players take turns picking candies from n heaps,the player wh ...

  9. 关于The C compiler "arm-none-eabi-gcc" is not able to compile a simple test program. 的错误自省...

    在 GCC ARM Embedded https://launchpad.net/gcc-arm-embedded/ 上面下载了个arm-none-eabi-gcc 用cmake 编译时 #指定C交叉 ...

随机推荐

  1. IDEA使用properties配置文件进行mysql数据路连接

    1. 新建一个web项目(过程不需要教了吧,所以就省略啦) 2. 右键点击新建的项目名,选择创建文件目录(Directory),一般properties文件夹命名应为resoures; 3.右键点击新 ...

  2. DNS服务器原理简述、搭建主/从DNS服务器并实现智能解析

    1. TLD:Top Level Domain 顶级域名 组织域:.com, .net, .org, .gov, .edu, .mil 国家域:.iq, .tw, .hk, .jp, .cn, ... ...

  3. Bash的循环结构(for和while)

    在bash有三中类型的循环结构表达方法:for,while,until.这里介绍常用的两种:for和while. for bash的for循环表达式和python的for循环表达式风格很像: for ...

  4. html页面加载初始化方法

    js: 方法一: window.onload=function(){内容} 方法二(自己定义方法): function onload(){内容} onload(); jQuery: 方法一: $(do ...

  5. LINUX系统---中级相关操作和知识

    LINUX系统的中级,来搞一些LINUX安全相关的东西,还有在公司生成中长搞的集群. RHCS集群 什么是高可用 什么是热备 什么是分布式

  6. Python面试快问快答,理论要的就是速度与精准,Python面试题No2

    今天的面试题 第1题:python2和python3的range(100)的区别 range()函数的含义 range函数是一个用来创建算数级数序列的通用函数,返回一个[start, start + ...

  7. Texture 纹理贴图

    基础贴图Shader:只有纹理 1. 在属性中声明纹理贴图: _MainTex ("Texture", 2D) = "white" {} 2. 在Pass中声明 ...

  8. BNUOJ 26223 CosmoCraft

    CosmoCraft Time Limit: 1000ms Memory Limit: 32768KB This problem will be judged on HDU. Original ID: ...

  9. 添物不花钱学JavaEE(基础篇)- Java

    Java Java是一面向对象语言 Write Once Run Anywhere Designed for easy Web/Internet applications, Mobile Widesp ...

  10. HDU 5024

    题目大意: 在2个图上显示为'.'的位置建两座房间,保证这两间房子中间只转一个90度的弯,可以斜着走,问能建成房子的最远的路程长度为多少 暴力枚举 因为有8个方向,但横竖走和斜着走是不会产生90度角的 ...