Description

小E 与小W 进行一项名为“E&D”游戏。游戏的规则如下:桌子上有2n 堆石子,编号为1..2n。其中,为了方便起见,我们将第2k-1 堆与第2k 堆(1 ≤ k ≤ n)视为同一组。第i堆的石子个数用一个正整数Si表示。一次分割操作指的是,从桌子上任取一堆石子,将其移走。然后分割它同一组的另一堆石子,从中取出若干个石子放在被移走的位置,组成新的一堆。操作完成后,所有堆的石子数必须保证大于0。显然,被分割的一堆的石子数至少要为2。两个人轮流进行分割操作。如果轮到某人进行操作时,所有堆的石子数均为1,则此时没有石子可以操作,判此人输掉比赛。小E 进行第一次分割。他想知道,是否存在某种策略使得他一定能战胜小W。因此,他求助于小F,也就是你,请你告诉他是否存在必胜策略。例如,假设初始时桌子上有4 堆石子,数量分别为1,2,3,1。小E可以选择移走第1堆,然后将第2堆分割(只能分出1 个石子)。接下来,小W 只能选择移走第4 堆,然后将第3 堆分割为1 和2。最后轮到小E,他只能移走后两堆中数量为1 的一堆,将另一堆分割为1 和1。这样,轮到小W 时,所有堆的数量均为1,则他输掉了比赛。故小E 存在必胜策略。

神题。。。显然把一组视为一个整体算SG值,但Si为2*10^9,太大,会超时,上网膜题解,竟然要找规律。。。然后就打表找呗。我打了个10*10的表,发现一些规律:对于SG[i][j],当i,j同为奇数时它的值为0,且i为奇数,j为偶数,i为偶数,j为奇数,或者i,j同为偶数时他们的值是一样的(表述的有点不太恰当。。。打个表看看吧)。且当i,j同为偶数时,SG[i][j]=SG[i/2][j/2]+1。利用这个规律,我们可以快速求出SG值。

代码:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int SG(int n,int m)
{if(n&1&&m&1)return 0;if(!(n&1)&&!(m&1))return SG(n>>1,m>>1)+1;if(!(n&1)&&m&1)return SG(n>>1,(m+1)>>1)+1;if(n&1&&!(m&1))return SG((n+1)>>1,m>>1)+1;
}
int main()
{int T;scanf("%d",&T);while(T--){int n,ans=0;scanf("%d",&n);for(int i=1;i<=(n>>1);i++){int x,y;scanf("%d%d",&x,&y);ans^=SG(x,y);}   if(ans)puts("YES");else puts("NO");}
}

[BZOJ]1228: [SDOI2009]ED 博弈SG相关推荐

  1. BZOJ 1228: [SDOI2009]ED(SG定理)

    这道嘛,很容易就看出是个nim和,然后问题就是怎么算子问题的sg函数了 先暴力个表看下规律,很容易就找出来了~~~(百度空间又渣了,图贴不出来= =) 32 0 1 0 2 0 1 0 3 0 1 0 ...

  2. bzoj 1228 [SDOI2009]ED 博弈论

    题面 题目传送门 解法 显然,这个游戏可以拆成多个游戏的和 那么,我们就可以使用SG定理 定义\(SG(x,y)\)表示同一组石子中分别有\(x\)个石子和\(y\)个石子的\(SG\)值 发现\(x ...

  3. bzoj千题计划287:bzoj1228: [SDOI2009]ED

    http://www.lydsy.com/JudgeOnline/problem.php?id=1228 打SG函数表,找规律: 若n是奇数m是奇数,则SG(n,m)=0 若n是偶数m是偶数,则SG( ...

  4. 点分治问题 ----------- P3727 曼哈顿计划E[点分治+博弈SG函数打表找规律]

    题目链接 解题思路: 1.首先对于每个操作我们实际上是一个博弈问题 对于k=1的操作就是很基础的NIM游戏就是找到一条链的异或和为0 对于k=2的操作通过达打表找规律: 如果s是奇数那么偶数的SG函数 ...

  5. NIM博弈+SG函数求解

    ICG 给定一个有向无环图和一个起始顶点上的一枚棋子,两名选手交替的将这枚棋子沿有向边进行移动,无法移动者判负. 这个游戏可以认为是所有 Impartial Combinatorial Games 的 ...

  6. (转)博弈 SG函数

    此文为以下博客做的摘要: https://blog.csdn.net/strangedbly/article/details/51137432 ---------------------------- ...

  7. CodeForces - 850C Arpa and a game with Mojtaba(博弈+sg函数)

    题目链接:点击查看 题目大意:给出n个数,两个人轮流按照规则操作,不能操作的人即为失败,规则很简单,每次找一个质数p的k次幂,记做x=,将数组中所有包含x倍数的数都除以x,必须保证至少有一个数可以除以 ...

  8. 博弈-sg函数的原理和优化(hdu-1536)

    sg函数:sg函数是博弈中的确定一个position性质的一个函数,全称是sprague-grundy. 性质1:对于所有的p-position,都有sg = 0:对于所有的n-position都有s ...

  9. 牛客国庆集训派对Day3: G. Stones(博弈+SG)

    G. Stones 题目描述 有n堆石子,第i堆石子有xi个. 修修和栋栋轮流取石子,每人每次需要从任意一堆石子中取走个,修修先手.无法操作的人失败.此外,如果一个人取完了一堆石子,他会立即获胜. 不 ...

  10. 【博弈论】博弈论入门笔记(四类基础博弈+SG函数)

    『博弈论定义』 博弈论又被称为对策论(Game Theory):是二人或多人在平等的对局中各自利用对方的策略变换自己的对抗策略,达到取胜目标的理论.博弈论是研究互动决策的理论.博弈可以分析自己与对手的 ...

最新文章

  1. 【Web安全】一款功能强大的Web身份认证测试框架
  2. 大话数据结构与算法:基础篇
  3. Android的服务(Service)(二)Service的自动重启问题
  4. 她说:我希望你好好写代码
  5. android 控件 margin,Android MarginDesign控件TabLayout导航栏使用详解
  6. Valgrind概述
  7. 相机标定(一)—— 向量几何基础
  8. 电子工业出版社博文视点图书在微软VS2010全球发布会上受追捧
  9. Confluence 6 为站点禁用匿名用户访问
  10. 黄聪:基于jQuery+JSON的省市区三级地区联动
  11. 怎样用计算机绘制幂函数图像,几何画板如何画幂函数的图像
  12. 财智家庭理财软件 V5.5 精锐版
  13. cad灯具图标_cad灯具图例下载
  14. format mla_MLAFormatMLA格式解读
  15. retrofit + rxjava2报错java.lang.IllegalStateException:Excepted a String but was BEGIN_OBJECT at line..
  16. 蓝牙信标人员定位技术原理分析
  17. windows10系统插耳机有回声解决办法?
  18. 业余草双因素认证(2FA)教程
  19. LogLoss的公式演化
  20. FLV 格式:为什么直播首选这个流媒体格式?丨音视频基础

热门文章

  1. Android之伪装QQ后台偷偷发短信
  2. 计算机可以谭音乐吗,谭晶怎么被叫谭哈哈 《歌手》谭晶演唱什么歌曲
  3. retina 显示屏详细理解
  4. hibernate(lazy加载)的意思
  5. 微信浏览量服务器,微信uv和pv是什么?独立访客(UV)数据页面浏览数(PV)的关系
  6. Beijing's Antitrust Blunder
  7. 每一篇博文都是与自己的一次对话
  8. 优动漫PAINT拾色器功能介绍
  9. win10计算机远程连接命令,详细教你win10设置远程桌面连接命令
  10. 六、HTML高级标签