Time Limit: 5 Sec  Memory Limit: 162 MB
Submit: 871  Solved: 365
[Submit][Status][Discuss]

Description

小H和小Z正在玩一个取石子游戏。 取石子游戏的规则是这样的,每个人每次可以从一堆石子中取出若干个石子,
每次取石子的个数有限制,谁不能取石子时就会输掉游戏。 小H先进行操作,他想问你他是否有必胜策略,如果有
,第一步如何取石子。

Input

输入文件的第一行为石子的堆数N 
接下来N行,每行一个数Ai,表示每堆石子的个数 接下来一行为每次取石子个数的种类数M 
接下来M行,每行一个数Bi,表示每次可以取的石子个数,
输入保证这M个数按照递增顺序排列。
N≤10 Ai≤1000
对于全部数据,M≤10,Bi≤10

Output

输出文件第一行为“YES”或者“NO”,表示小H是否有必胜策略。 
若结果为“YES”,则第二行包含两个数,第一个数表示从哪堆石子取,第二个数表示取多少个石子,
若有多种答案,取第一个数最小的答案,
若仍有多种答案,取第二个数最小的答案。

Sample Input

4
7
6
9
3
2
1
2

Sample Output

YES
1 1
Hint
样例中共有四堆石子,石子个数分别为7、6、9、3,每人每次可以从任何一堆石子中取出1个或者2个石子,小H有
必胜策略,事实上只要从第一堆石子中取一个石子即可。

HINT

Source

Day2

这题不算是很难,数据范围很小,直接暴力求SG函数。
转移题目已经给出了
判断的时候枚举每一堆石子,看看拿走几个仍然满足条件(判断的时候不用暴力枚举,直接用求出来的ans答案,结合异或的性质)
注意一个特别坑的地方!!
^的运算级比==低!!
#include<cstdio>
#include<queue>
#include<cstring>
#include<algorithm>
using namespace std;
const int MAXN=1e6+10,INF=1e9+10;
inline char nc()
{static char buf[MAXN],*p1=buf,*p2=buf;return p1==p2&&(p2=(p1=buf)+fread(buf,1,MAXN,stdin),p1==p2)?EOF:*p1++;
}
inline int read()
{char c=nc();int x=0,f=1;while(c<'0'||c>'9'){if(c=='-')f=-1;c=nc();}while(c>='0'&&c<='9'){x=x*10+c-'0';c=nc();}return x*f;
}
int S[1005],SG[1005],N,M;
int a[MAXN],b[101];
main()
{#ifdef WIN32 freopen("a.in","r",stdin);freopen("b.out","w",stdout);#else#endifN=read();for(int i=1;i<=N;i++) a[i]=read();M=read();for(int j=1;j<=M;j++) b[j]=read();sort(b+1,b+M+1);int limit=1001;for(int i=1;i<=limit;i++){memset(S,0,sizeof(S));for(int j=1;j<=M&&b[j]<=i;j++)S[ SG[i-b[j]] ] = 1;for(int j=0;;j++) if(S[j]==0) {SG[i]=j;break;}}int ans=0;for(int i=1;i<=N;i++)ans=ans^(SG[a[i]]);if(ans==0) {printf("NO\n");return 0;}for(int i=1;i<=N;i++){for(int j=1;j<=M&&b[j]<=a[i];j++){if( (ans ^ SG[a[i]-b[j]] ^ SG[a[i]]) == 0) //好坑啊。。
            {printf("YES\n%d",i);printf(" %d",b[j]);return 0;}}}return 0;
}

转载于:https://www.cnblogs.com/zwfymqz/p/8463268.html

BZOJ 1874: [BeiJing2009 WinterCamp]取石子游戏(SG函数)相关推荐

  1. bzoj1874: [BeiJing2009 WinterCamp]取石子游戏

    1874: [BeiJing2009 WinterCamp]取石子游戏 Time Limit: 5 Sec  Memory Limit: 162 MB Submit: 834  Solved: 350 ...

  2. BZOJ 1413: [ZJOI2009]取石子游戏 博弈+Dp

    title BZOJ 1413 Description 在研究过Nim游戏及各种变种之后,Orez又发现了一种全新的取石子游戏,这个游戏是这样的: 有n堆石子,将这n堆石子摆成一排.游戏由两个人进行, ...

  3. bzoj 1413: [ZJOI2009]取石子游戏(博弈+DP)

    1413: [ZJOI2009]取石子游戏 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 711  Solved: 470 [Submit][Sta ...

  4. 4005. 取石子游戏

    Powered by:NEFU AB-IN Link 文章目录 4005. 取石子游戏 题意 思路 代码 4005. 取石子游戏 题意 Alice 和 Bob 正在玩一个取石子游戏. 共有 n个石子, ...

  5. 51nod3431 取石子游戏

    3431 取石子游戏 小H和小Z正在玩一个取石子游戏. 取石子游戏的规则是这样的,每个人每次可以从一堆石子中取出若干个石子,每次取石子的个数有限制,谁不能取石子时就会输掉游戏. 小H先进行操作,他想问 ...

  6. 博弈论之取石子游戏的学习

    以下内容来自转载: 博弈问题简介 所讨论的博弈问题满足以下条件: 玩家只有两个人,轮流做出决策 游戏的状态集有限,保证游戏在有限步后结束,这样必然会产生不能操作者,其输 对任何一种局面,胜负只决定于局 ...

  7. 威佐夫博弈:百练OJ:1067:取石子游戏

    威佐夫博弈(Wythoff's game):有两堆各若干个物品,两个人轮流从任一堆取至少一个或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜. 百练OJ:1067:取石子游戏 ...

  8. POJ 1067 取石子游戏

    取石子游戏 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 40917   Accepted: 13826 Descripti ...

  9. POJ-1067取石子游戏,威佐夫博弈范例题/NYOJ-161,主要在于这个黄金公式~~

    取石子游戏 Time Limit: 1000MS   Memory Limit: 10000K              Description 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取 ...

最新文章

  1. python英文翻译-Python运算符-局部英文翻译版
  2. 变更AD计算机名称和IP地址
  3. Debian 安装docker
  4. canal解析mysql日志异常_利用Canal解析mysql binlog日志
  5. 【转】Windows系统中ckplayer视频边下边放,视频转码mp4及last atom in file was not a moov atom问题...
  6. 移除加密的pdf文件密码
  7. Struts2学习笔记(十八) 防止表单重复提交
  8. centos 网络自动连接_自动连接最优信号 腾讯云?云兔解决物联网络连接问题
  9. SSO单点登录系统的搭建——Keycloak
  10. 关于unity打包apk在手机上安装失败(-108)
  11. Android Retrofit
  12. 招银网络java面经
  13. 虚拟 DOM 是什么 有什么优缺点
  14. python:比较运算符(等于,小于,大于,不等于,大于等于,小于等于)的简单用法
  15. Thinkphp中的assign() 和 display()
  16. 高等代数----最小多项式的矩阵表示
  17. Java中求集合交集、并集、差集
  18. java使用背景音乐_JAVA播放背景音乐
  19. 客户端iOS 的自动化测试
  20. ts里变量定义any报错Unexpected any. Specify a different type.

热门文章

  1. Python自学笔记-列表生成式(来自廖雪峰的官网Python3)
  2. JavaScript 正则表达式的使用
  3. 将unicode编码的txt文件转为utf-8编码
  4. MATLAB plot画图后横轴去除空白
  5. Verilog随机数生成$random
  6. 修改can接口波特率_CAN总线分析仪使用
  7. 使用神经网络摸你加法器
  8. 从源码分析DEARGUI之add_plot和add_scatter_series
  9. [TJOI2019]甲苯先生的滚榜——非旋转treap
  10. Python排序dict之list数组