【bzoj3576】 Hnoi2014—江南乐
http://www.lydsy.com/JudgeOnline/problem.php?id=3576 (题目链接)
题意
给出一个数$F$,然后$n$堆石子,每次操作可以把一堆不少于$F$的石子分成$m$堆,$m$是玩家任选的不少于$2$的正整数,这$m$堆石子中最多的一堆与最少的一堆之差不超过$1$,问是否存在先手必胜。
Solution
对每一个子游戏考虑如何求解$SG$函数。
假设当前一堆中有$i$石子,我们想把它分成$j$堆,那么石子数为$k=\lfloor{i/j}\rfloor+1$的有$x=i-j*k$堆,石子数为$k$的有$y=i-x$堆。而此时的$SG[i]=[(x\&1)*SG[k+1]]~XOR~[(y\&1)*SG[k]]$。考虑到$k$的取值只有$\sqrt{i}$种,我们可以枚举$j$,那么怎么确定$x,y$的奇偶性呢。$x$的奇偶性只与$j$有关,而一旦$x$确定,$y$就确定了。所以$x,y$的奇偶性只有$2$种情况,分开讨论一下就好了。
代码
// bzoj3576
#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<queue>
#define LL long long
#define inf (1ll<<60)
#define Pi acos(-1.0)
#define free(a) freopen(a".in","r",stdin),freopen(a".out","w",stdout);
using namespace std;const int maxn=100010;
int T,F,n,SG[maxn],v[maxn];int main() {scanf("%d%d",&T,&F);for (int i=0;i<F;i++) SG[i]=0;for (int i=F;i<=100000;i++) {for (int k,pos,j=2;j<=i;j=pos+1) {k=i/j;pos=i/k;int x=i-k*j,y=j-x;v[((x&1)*SG[k+1])^((y&1)*SG[k])]=i;if (j+1<=min(pos,i)) {x=i-k*(j+1),y=j+1-x;v[((x&1)*SG[k+1])^((y&1)*SG[k])]=i;}}for (int j=0;;j++) if (v[j]!=i) {SG[i]=j;break;}//printf("%d ",SG[i]);}while (T--) {scanf("%d",&n);int ans=0;for (int x,i=1;i<=n;i++) {scanf("%d",&x);ans^=SG[x];}printf(ans ? "1" : "0");if (T) printf(" ");}return 0;
}
转载于:https://www.cnblogs.com/MashiroSky/p/6440455.html
【bzoj3576】 Hnoi2014—江南乐相关推荐
- Bzoj3576 [Hnoi2014]江南乐
Time Limit: 30 Sec Memory Limit: 512 MB Submit: 1555 Solved: 552 Description 小A是一个名副其实的狂热的回合制游戏玩家. ...
- 【BZOJ3576】江南乐,博弈
传送门 思路: 很厉害的一道博弈 虽说是暴力求SG函数,但是要加入分块优化 如果说直接按照规则求的话是O(n2)O(n^2)的 (这也是我会的--) 但是注意到⌊ni⌋⌊\frac n i⌋这个神奇的 ...
- BZOJ 3576 江南乐
http://www.lydsy.com/JudgeOnline/problem.php?id=3576 思路:由于数字巨大,因此N^2异或做法是过不了的,我们考虑将n个石子分成i堆,那么会有n%i堆 ...
- P3235-[HNOI2014]江南乐【整除分块,SG函数】
正题 题目链接:https://www.luogu.com.cn/problem/P3235 题目大意 TTT组游戏,固定给出FFF.每组游戏有nnn个石头,每次操作的人可以选择一个数量不少于FFF的 ...
- # HNOI2012 ~ HNOI2018 题解
HNOI2012 题解 [HNOI2012]永无乡 Tag:线段树合并.启发式合并 联通块合并问题. 属于\(easy\)题,直接线段树合并 或 启发式合并即可. [HNOI2012]排队 Tag:组 ...
- OSChina 周六乱弹 —— 老用户与狗
2019独角兽企业重金招聘Python工程师标准>>> Osc乱弹歌单(2018)请戳(这里) [今日歌曲] @yijiangxiyang :如今却忆江南乐,当时年少春衫薄.分享杨千 ...
- 科大星云诗社动态20210329
[每日一诗] 菩萨蛮(其三) 韦庄 如今却忆江南乐,当时年少春衫薄.骑马倚斜桥,满楼红袖招. 翠屏金屈曲,醉入花丛宿.此度见花枝,白头誓不归. 词人所写的既是跟一个现实的女子离别的相思怀念,也可能是暗 ...
- 十年磨一剑,霜刃未曾试(纪念最爱——加内特)
十年磨一剑,霜刃未曾试 空破天狼,近天狼 艰难的童年:梦回 1976 1976年5月19日,加内特出生在南卡罗莱纳一个叫毛丁的小镇.父母在他很小的时候,就分道扬镳.加内特跟着母亲过,但她没有太多能力来 ...
- 陌上谁家年少,足风流
转自:http://mxjz219.blog.sohu.com/25481441.html 春日游,杏花插满头.陌上谁家年少,足风流.妾拟将身嫁与,一生休,纵被无情弃,不能羞. 在唐五代词中,我最爱的 ...
最新文章
- dlib 怎么安装vs2017_VS2017(Visual Studio2017) 搭建QT5开发环境
- 向上转型--Upcasting
- dom解析和sax解析的区别及优缺点
- IOI 2007 Sail (线段树+贪心)
- Codeforces Round #233 (Div. 2)D. Painting The Wall 概率DP
- python是一种面相什么语言_Python面相对象编程的知识总结
- 面试官:编写一个 SQL 查询,找出每个部门工资第二高的员工
- 修改10g自动统计信息收集作业GATHER_STATS_JOB到仅仅周末执行
- 数字后端基本概念介绍——Row
- POJ3982 序列【大数】
- Web全栈工程师养成记
- 开源大数据处理引擎汇总(一)
- 台式计算机开机不自检不起动,台式机开机不自检怎么办
- Android4.0.4 framebuffer 支持32位色彩深度
- 关于公共安全解决方案的思考
- 如何修改wamp5的端口号,默认页。
- linux:The CXX compiler identification is unknown
- 【第三方互联】10、注册成为支付宝(Alipay)开发者
- 网盾极风云:五分钟搞懂HTTP和HTTPS
- 多态之父类引用指向子类对象
热门文章
- 面向对象真的需要继承吗?
- 数据结构期末复习之归并排序和基数排序
- 基础知识(十五)Cmake
- oracle 段空间收缩,Oracle10g用Shrink Space收缩Oracle数据段
- maven mirror 优先级
- 图层样式混合选项_图标设计,用PS的图层样式制作逼真的玉石图标
- llvm安装方式_安装 LLVM 和 Clang
- java多线程 文件夹_Java多线程遍历文件夹,广度遍历加多线程加深度遍历结合
- python selenium 文件上传_python-selenium -- 文件上传操作
- Java基础---代码块和final关键字