题解——牛客网Wannafly挑战赛23 B-游戏 (SG函数)
前言
比赛的时候没学过SG函数的蒟蒻以为是道结论题,但是不是QwQ
和dummyummy巨佬一起推了快三个小时的规律
最后去问了真正的巨佬__stdcall
__stdcall面带微笑的告诉我们,这是SG函数的板子题
QwQ
被卡科技了
体验极差
正文
题目
链接:https://www.nowcoder.com/acm/contest/161/B
来源:牛客网
题目描述
现在小N先手。他想知道他第一步有多少种不同的必胜策略。一个策略指的是,从哪堆石子中,取走多少颗石子。只要取的那一堆不同,或取的数目不同,都算不同的策略。
输入描述:
第一行一个整数n。接下来一行n个整数,分别代表每堆石子的石子数目。数据保证输入的所有数字都不超过\( 10^{5} \),均大于等于1,且为整数。
输出描述:
一行一个整数代表小$N$第一步必胜策略的数量。
输入
10 47 18 9 36 10 1 13 19 29 1
输出
7
题解
题目让求第一步必胜策略的数量
那就是求第一步走后有多少个状态是必败态
组合的Nim游戏模型
求出SG函数,然后枚举每个数和它的约数
累加一下ans
完毕
代码
#include <cstdio> #include <algorithm> #include <cstring> #include <vector> #include <cmath> using namespace std; vector<int> g[100001]; int qz[100001],hz[100002],n,a[100001],SG[100001]={0},f[100001]; int ans=0,maxa; void sg(void){for(int i=1;i<=n;i++)for(int j=1;j<=sqrt(a[i]);j++)if(a[i]%j==0){if(a[i]/j==j)g[i].push_back(j);else{g[i].push_back(j);g[i].push_back(a[i]/j);}}return; } int main(){scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d",&a[i]),maxa=max(a[i],maxa);SG[0]=0;for(int i=1;i<=maxa;i++) {int tt;for(int k=2,j=4;;j*=4,k+=2) {if(i%j==1*(j/4)||i%j==3*(j/4)) tt=k-1;if(i%j==2*(j/4)) tt=k;if(i%j!=0) break;}SG[i]=tt;}sg(); // for(int i=0;i<=maxa;i++) // printf("SG[%d]=%d\n",i,SG[i]);for(int i=1;i<=n;i++)qz[i]=qz[i-1]^SG[a[i]];for(int j=n;j>=1;j--)hz[j]=hz[j+1]^SG[a[j]];for(int i=1;i<=n;i++){for(int j=0;j<g[i].size();j++)if(!((qz[i-1]^hz[i+1])^SG[a[i]-g[i][j]]))ans++;}printf("%d",ans);return 0; }
转载于:https://www.cnblogs.com/dreagonm/p/9570194.html
题解——牛客网Wannafly挑战赛23 B-游戏 (SG函数)相关推荐
- 牛客网 Wannafly挑战赛8 A.小Y和小B睡觉觉
写了一会不想写了... A-小Y和小B睡觉觉 链接:https://www.nowcoder.com/acm/contest/57/A 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制 ...
- 牛客网 Wannafly挑战赛20 A-染色
链接:https://www.nowcoder.com/acm/contest/133/A 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524 ...
- 牛客网 Wannafly挑战赛27 蓝魔法师
蓝魔法师 链接: https://www.nowcoder.com/acm/contest/215/C 来源:牛客网 题目描述 "你,你认错人了.我真的,真的不是食人魔."--蓝魔 ...
- 牛客网wannafly挑战赛13-D(贪心)
链接:https://www.nowcoder.com/acm/contest/80/D 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...
- 牛客网wannafly挑战赛13-E(线段树)
链接:https://www.nowcoder.com/acm/contest/80/E 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...
- 牛客网Wannafly挑战赛15 B车辆安排(模拟)AND C 出队(规律)
传送门 :B题:点我 C题: 点我 题目描述 有n个队伍,每个队伍的人数小于等于5,每辆车最多坐5个人,要求一个队伍的人都在一辆车上,求最少的车数 输入描述: 第一行n 第二行n个数,表示每个队伍的人 ...
- [牛客网Wannafly挑战赛24F]wyf的超级多项式
Description 已知 F i = ∑ j = 1 k a j v j i F_i=\sum_{j=1}^{k}a_jv_j^i Fi=∑j=1kajvji 给出 v 1.. k v1. ...
- 牛客网Wannafly挑战赛29 B - 白井黑子 乱搞
Description kuroko 作为常盘台唯一的空间系能力者,在每年例行的能力测试中可绝对不能让 misaka 失望哦,但是由于她的等级只是 level 4「大能力者」,在能力测试中会遇到不少困 ...
- 牛客网Wannafly挑战赛4(割草机)
点击打开链接 思路:不管怎么走,都必须从第一个有'W'的行走到最后一个有'W'的行,对于每一行,都必须处理完这行所有的'W',如果在奇数行,那就应该走到这行和下一行有W的最右边,再往下走,如果在偶数行 ...
最新文章
- Java实现均摊_Java均摊复杂度和防止复杂度的震荡原理分析
- 不想 CRUD 干到老,就来看看这篇 OOM 排查的实战案例!
- ueditor百度富文本编辑器linux下报错: class path resource [config.json] cannot be resolved to absolute file path
- Flink SQL 1.11 新功能与最佳实践
- finalize到底是什么
- python 函数默认参数的小坑
- 永擎服务器主板稳定性,主板看不停 Computex2015华擎展台一览
- 数据结构与算法的分析
- 【转】数据库范式(1NF 2NF 3NF BCNF)详解二
- 升级php5.5.10扩展不兼容
- mysql建表语句外键_mysql里面用语句怎么建立表外键的命令
- 南阳理工acm 1007GCD
- 汇编语言和本地代码及通过编译器输出汇编语言的源代码
- 快讯:迈阿密在建公寓计划为飞行汽车推出天空港口
- Android 经典系统 HTC One 802d国行电信专版/最新Viper2.6.0/永久root/强大的功能、高级设置/纯净省电ROM
- 两数求和(C语言超简单解法)
- intel服务器无线网卡,刷版本号?Intel再发新版无线网卡驱动
- 亚马逊运营推热新品的一些技巧分享值得卖家们收藏!
- 名帖80 苏轼 楷书《南轩梦语》
- 抖音号永久封禁了怎么解封
热门文章
- Linux 定时任务没有执行
- UFS 3 - UFS RPMB
- STemWin专题--图形化窗口的简单制作
- metal slug java_【进化史】合金弹头进化史 Metal Slug Games (1996-2020)
- AOC1952 显示屏 输入不支持
- RichTextBox控件
- mysql 三个表内连接查询_MySQL多表查询详解
- python解析XML文件报错 entity not defined Entity ndash not defined
- 公告页面制作html,群公告编辑页面.html
- whmcs license.php,免费永久WHMCS授权(套用Hostgator)申请及使用教程