BZOJ 1874: [BeiJing2009 WinterCamp]取石子游戏(SG函数)
Submit: 871 Solved: 365
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
7
6
9
3
2
1
2
Sample Output
1 1
Hint
样例中共有四堆石子,石子个数分别为7、6、9、3,每人每次可以从任何一堆石子中取出1个或者2个石子,小H有
必胜策略,事实上只要从第一堆石子中取一个石子即可。
HINT
Source
Day2
#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函数)相关推荐
- bzoj1874: [BeiJing2009 WinterCamp]取石子游戏
1874: [BeiJing2009 WinterCamp]取石子游戏 Time Limit: 5 Sec Memory Limit: 162 MB Submit: 834 Solved: 350 ...
- BZOJ 1413: [ZJOI2009]取石子游戏 博弈+Dp
title BZOJ 1413 Description 在研究过Nim游戏及各种变种之后,Orez又发现了一种全新的取石子游戏,这个游戏是这样的: 有n堆石子,将这n堆石子摆成一排.游戏由两个人进行, ...
- bzoj 1413: [ZJOI2009]取石子游戏(博弈+DP)
1413: [ZJOI2009]取石子游戏 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 711 Solved: 470 [Submit][Sta ...
- 4005. 取石子游戏
Powered by:NEFU AB-IN Link 文章目录 4005. 取石子游戏 题意 思路 代码 4005. 取石子游戏 题意 Alice 和 Bob 正在玩一个取石子游戏. 共有 n个石子, ...
- 51nod3431 取石子游戏
3431 取石子游戏 小H和小Z正在玩一个取石子游戏. 取石子游戏的规则是这样的,每个人每次可以从一堆石子中取出若干个石子,每次取石子的个数有限制,谁不能取石子时就会输掉游戏. 小H先进行操作,他想问 ...
- 博弈论之取石子游戏的学习
以下内容来自转载: 博弈问题简介 所讨论的博弈问题满足以下条件: 玩家只有两个人,轮流做出决策 游戏的状态集有限,保证游戏在有限步后结束,这样必然会产生不能操作者,其输 对任何一种局面,胜负只决定于局 ...
- 威佐夫博弈:百练OJ:1067:取石子游戏
威佐夫博弈(Wythoff's game):有两堆各若干个物品,两个人轮流从任一堆取至少一个或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜. 百练OJ:1067:取石子游戏 ...
- POJ 1067 取石子游戏
取石子游戏 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 40917 Accepted: 13826 Descripti ...
- POJ-1067取石子游戏,威佐夫博弈范例题/NYOJ-161,主要在于这个黄金公式~~
取石子游戏 Time Limit: 1000MS Memory Limit: 10000K Description 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取 ...
最新文章
- python英文翻译-Python运算符-局部英文翻译版
- 变更AD计算机名称和IP地址
- Debian 安装docker
- canal解析mysql日志异常_利用Canal解析mysql binlog日志
- 【转】Windows系统中ckplayer视频边下边放,视频转码mp4及last atom in file was not a moov atom问题...
- 移除加密的pdf文件密码
- Struts2学习笔记(十八) 防止表单重复提交
- centos 网络自动连接_自动连接最优信号 腾讯云?云兔解决物联网络连接问题
- SSO单点登录系统的搭建——Keycloak
- 关于unity打包apk在手机上安装失败(-108)
- Android Retrofit
- 招银网络java面经
- 虚拟 DOM 是什么 有什么优缺点
- python:比较运算符(等于,小于,大于,不等于,大于等于,小于等于)的简单用法
- Thinkphp中的assign() 和 display()
- 高等代数----最小多项式的矩阵表示
- Java中求集合交集、并集、差集
- java使用背景音乐_JAVA播放背景音乐
- 客户端iOS 的自动化测试
- ts里变量定义any报错Unexpected any. Specify a different type.