BZOJ 1874 取石子游戏 - SG函数
Description
$N$堆石子, $M$种取石子的方式, 最后取石子的人赢, 问先手是否必胜
$A_i <= 1000$,$ B_i <= 10$
Solution
由于数据很小, 直接暴力求SG函数即可判断。
Code
#include<cstdio>
#include<cstring>
#include<algorithm>
#define rd read()
using namespace std; const int N = 1e3 + ; int n, m, a[], b[N];
int SG[N], S[]; int read() {
int X = , p = ; char c = getchar();
for(;c > '' || c < ''; c = getchar()) if(c == '-') p = -;
for(; c >= '' && c <= ''; c = getchar()) X = X * + c - '';
return X * p;
} void init() {
for(int i = ; i <= ; ++i) {
int tmp = ;
memset(S, , sizeof(S));
for(int j = ; j <= m && b[j] <= i; ++j)
S[SG[i - b[j]]] = ;
for(; S[tmp]; ++tmp);
SG[i] = tmp;
}
} int main()
{
n = rd;
for(int i = ; i <= n; ++i)
a[i] = rd;
m = rd;
for(int i = ; i <= m; ++i)
b[i] = rd;
init();
int ans = ;
for(int i = ; i <= n; ++i)
ans ^= SG[a[i]];
if(ans) printf("YES\n");
else return printf("NO\n"), ;
for(int i = ; i <= n; ++i) {
int tmp = ans ^ SG[a[i]];
for(int j = ; j <= m && b[j] <= a[i]; ++j)
if((tmp ^ SG[a[i] - b[j]]) == )
return printf("%d %d\n", i, b[j]);
}
}
BZOJ 1874 取石子游戏 - SG函数的更多相关文章
- bzoj 1874 取石子游戏 题解 & SG函数初探
[原题] 1874: [BeiJing2009 WinterCamp]取石子游戏 Time Limit: 5 Sec Memory Limit: 162 MB Submit: 334 Solved ...
- BZOJ 1874: [BeiJing2009 WinterCamp]取石子游戏(SG函数)
Time Limit: 5 Sec Memory Limit: 162 MBSubmit: 871 Solved: 365[Submit][Status][Discuss] Description ...
- BZOJ 1874 取石子游戏 (NIM游戏)
题解:简单的NIM游戏,直接计算SG函数,至于找先手策略则按字典序异或掉,去除石子后再异或判断,若可行则直接输出. #include <cstdio> const int N=1005; ...
- bzoj 1188 [HNOI2007]分裂游戏 SG函数 SG定理
[HNOI2007]分裂游戏 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1394 Solved: 847[Submit][Status][Dis ...
- BZOJ 1413 取石子游戏(DP)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1413 题意:n堆石子排成一排.每次只能在两侧的两堆中选择一堆拿.至少拿一个.谁不能操作谁 ...
- bzoj 1188 : [HNOI2007]分裂游戏 sg函数
题目链接 给n个位置, 每个位置有一个小球. 现在两个人进行操作, 每次操作可以选择一个位置i, 拿走一个小球.然后在位置j, k(i<j<=k)处放置一个小球. 问你先进行什么操作会先手 ...
- OpenJudge计算概论-取石子游戏
OpenJudge计算概论-取石子游戏[函数递归练习] /*====================================================================== ...
- BZOJ 1874: [BeiJing2009 WinterCamp]取石子游戏 [Nim游戏 SG函数]
小H和小Z正在玩一个取石子游戏. 取石子游戏的规则是这样的,每个人每次可以从一堆石子中取出若干个石子,每次取石子的个数有限制,谁不能取石子时就会输掉游戏. 小H先进行操作,他想问你他是否有必胜策略,如 ...
- 1874: [BeiJing2009 WinterCamp]取石子游戏 - BZOJ
Description小H和小Z正在玩一个取石子游戏. 取石子游戏的规则是这样的,每个人每次可以从一堆石子中取出若干个石子,每次取石子的个数有限制,谁不能取石子时就会输掉游戏. 小H先进行操作,他想问 ...
随机推荐
- base64 压缩图片
//图片处理 afterimg(err, photos) { var _this = this; if(err && err != null && err != '') ...
- burpsuite的使用(一)
安装证书: 打开burpsuite,设置好代理.端口8080,但是打开https的网站却因为证书问题无法访问. 这需要我们为浏览器手动安装CA证书, 安装CA证书有两种方式: 1. 在burpsuit ...
- android通过命令行安装sdk
在linux下没有界面化的安装sdk方式,所以需要通过下载zip包或命令行安装 一.通过tools下的android安装 1.进入到android工具 cd $ANDROID_HOME/tools ...
- git ssh免登陆,以及ssh config
git去连接github或gitlab上的远程仓库,可以使用ssh方式,也可以使用git的账号密码登录 这里介绍使用ssh方式实现免登陆(第一步和第二步即可实现) 第一步:生成ssh秘钥 ssh- ...
- HibernateDaoSupport类的使用(转)
看到一篇很好描述HibernateDaoSupport类使用的例子,特此在这和大家分享一下 核心提示:1. 继承了HibernateDaoSupport类的类获取session时,已不可用Sessio ...
- 【scrapy】关于xpath helper中能匹配,但是在程序里匹配为none的问题
原本使用xpath helper匹配的时候还是好好的,然鹅,把这个.//*[@id='novelInfo']/table/tbody/tr[3]/td[1]/复制到代码里就不行了,debug的时候显示 ...
- mro具体解释
你真的理解Python中MRO算法吗? [前言] MRO(Method Resolution Order):方法解析顺序.Python语言包含了很多优秀的特性,其中多重继承就是其中之一,但是多重继承会 ...
- 抛弃WebService,在.NET4中用 jQuery 调用 WCF
在我们之前的开发中,对于ajax程序,都是通过jQuery调用标记为[System.Web.Script.Services.ScriptService]的WebService,然后在WebServic ...
- Nginx搭建正向代理服务器
配置如下: server { listen 8888; #监听端口 location / { res ...
- Codeforces Beta Round #63 (Div. 2)
Codeforces Beta Round #63 (Div. 2) http://codeforces.com/contest/69 A #include<bits/stdc++.h> ...