【题解】一本通例题 S-Nim
\(\text{Solution:}\)
这个题就是给\(Nim\)游戏做了一个限制。
考虑一下\(\text{SG}\)函数:给定的局面下对应的\(SG\)函数值,若\(=0\)则必败。
又有:许多子游戏组成的一个游戏的\(SG=\text{xor}_{i=1}^n SG_i.\)
那么对于这个题,第一次的想法是对于每一个子游戏求一下是不是必胜。这显然是一个对\(SG\)函数了解不足的问题。
那么考虑一下如何求\(SG\)函数:
\(SG(0)=0\)显然。那么对于后面的数,由于\(s,k\)都很小,我们可以暴力枚举求\(SG.\)
求出\(SG\)之后,剩下的就是处理询问:\(m\)个局面,把每个局面的\(a_i\)异或起来,\(0\)为必败,输出答案即可。
#include<bits/stdc++.h>
using namespace std;
int k,s[500],m,n;
int f[10002];
int main(){
while(1){
scanf("%d",&k);
if(!k)return 0;
int mx=-1,mi=(1<<30);
string Ans="";
for(int i=1;i<=k;++i)scanf("%d",&s[i]),mx=max(mx,s[i]),mi=min(mi,s[i]);
sort(s+1,s+k+1);
for(int i=0;i<=10000;++i){
bitset<100001>vis;
for(int j=1;j<=k;++j){
if(i<s[j])break;
vis[f[i-s[j]]]=1;
}
for(int j=0;j<=mx+1;++j)if(vis[j]!=1){f[i]=j;break;}
}
scanf("%d",&m);
for(int i=1;i<=m;++i){
scanf("%d",&n);
int x,sg=0;
for(int j=1;j<=n;++j){
scanf("%d",&x);
sg^=f[x];
}
if(!sg)cout<<'L';
else cout<<"W";
}
cout<<endl;
}
return 0;
}
【题解】一本通例题 S-Nim的更多相关文章
- 一本通例题埃及分数—题解&&深搜的剪枝技巧总结
一.简述: 众所周知,深搜(深度优先搜索)的时间复杂度在不加任何优化的情况下是非常慢的,一般都是指数级别的时间复杂度,在题目严格的时间限制下难以通过.所以大多数搜索算法都需要优化.形象地看,搜索的优化 ...
- 一本通例题-生日蛋糕——题解<超强深搜剪枝,从无限到有限>
题目传送 显然是道深搜题.由于蛋糕上表面在最底层的半径确认后就确认了,所以搜索时的面积着重看侧面积. 找维度/搜索面临状态/对象:当前体积v,当前外表面面积s,各层的半径r[],各层的高度h[]. 可 ...
- HDU 5795 A Simple Nim (博弈 打表找规律)
A Simple Nim 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5795 Description Two players take turns ...
- BZOJ 1874 取石子游戏 (NIM游戏)
题解:简单的NIM游戏,直接计算SG函数,至于找先手策略则按字典序异或掉,去除石子后再异或判断,若可行则直接输出. #include <cstdio> const int N=1005; ...
- HDU 5465 Clarke and puzzle Nim游戏+二维树状数组
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5465 Clarke and puzzle Accepts: 42 Submissions: 26 ...
- [CQOI2013]新Nim游戏 线性基
题面 题面 题解 首先我们知道nim游戏先手必败当且仅当所有石堆异或和为0,因此我们的目标就是要使对手拿石堆的时候,无论如何都不能使剩下的石堆异或和为0. 对于一个局面,如果我们可以选取一些可以凑出0 ...
- hdu2509Be the Winner(反nim博弈)
Be the Winner Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tot ...
- 【bzoj4589】Hard Nim FWT
题目描述 Claris和NanoApe在玩石子游戏,他们有n堆石子,规则如下: 1. Claris和NanoApe两个人轮流拿石子,Claris先拿. 2. 每次只能从一堆中取若干个,可将一堆全取走, ...
- 五一培训 DAY1
DAY1 枚举 例题1 题解: 例题2 题解: 例题3 题解: vis[ ]判断是否为素数,pri[ ]储存素数 例题4 题解: 例题5 题解: PS: i < 1<<n ...
随机推荐
- 虚拟机VmWare打开报错,错误提示:VMware Authorization Service is not running!
作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985 QQ986945193 微博:http://weibo.com/mcxiaobing 说明:打开我的虚 ...
- 利用分块传输吊打所有WAF--学习笔记
在看了bypassword的<在HTTP协议层面绕过WAF>之后,想起了之前做过的一些研究,所以写个简单的短文来补充一下文章里“分块传输”部分没提到的两个技巧. 技巧1 使用注释扰乱分块数 ...
- Vue.js学习(八)—— 树形结构下拉框组件vue-treeselect
vue-treeselect是一个多选组件,具有对Vue.js的嵌套选项支持. 具有嵌套选项支持的单个和多个选择 模糊匹配 异步搜索 延迟加载(仅在需要时加载深层选项的数据) 键盘支持(使用Arrow ...
- shader效果
Unity Shader - 消融效果原理与变体 https://www.jianshu.com/p/d8b535efa9db
- web-UI自动化必会技能—xpath轴,了解一下?
本来以为不会再更新UI自动化相关的东西了,不过最近群里的朋友在搞UI,提出了许多问题,我看了下,大多还是页面元素定位类的问题,那今天就再讲点. 一.先了解xpath 说到元素定位,大家应该都知道常见的 ...
- leetcode刷题-90子集 II
题目 给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集). 说明:解集不能包含重复的子集. 示例: 输入: [1,2,2]输出:[ [2], [1], [1,2,2], [ ...
- eleLogger主题评论区(反馈与建议)
// run $('#blog_post_info, #BlogPostCategory, #post_next_prev, #blog_post_info_block').remove() $('# ...
- 反向代理搭建隧道,服务器系统为Ubuntu18.04
该文章参考了实验室师兄写的教程,并记录了自己在实操过程中的坑. 1.内网机器配置 假设现在有一台公用服务器和一台内网服务器,现在想通过反向代理的方式来访问内网服务器.假设公用服务器为A,内网服务器为B ...
- pip更新命令
python -m pip install --upgrade pip 更新时如果报错'NoneType' object has no attribute 'bytes', 解决办法:easy_ins ...
- python修改excel内容
前提:安装pip install xlutils和xlrd 思路:xlrd用来读数据,xlutils用来修改数据:先打开excel——读到原来的sheet页——生成可以修改的excel和sheet页— ...