这个东西卡常……预处理的时候要先把i%j,i/j都用变量表示,还要把%2变成&1……

首先每一堆都是不相关子游戏,所以对于每一堆求sg即可

考虑暴力枚举石子数i,分割块数j,分解成子问题求xor和(其实就是根据i/j,i/j+1的个数的奇偶性xor一下即可),然后对sg[i]暴力mex,这样是n^2的

考虑优化,注意到一共只有根号级别的i/j,所以根据这个分块,上面的xor和是跟距个数奇偶性,而同样i/j的奇偶性只有两种(因为总个数相同),也就是i%j和i%(j+2),j-(i%j)和(j+2)-i%(j+2)的奇偶性是一样的

然后对每个询问求sg的xor和即可

  1. #include<iostream>
  2. #include<cstdio>
  3. using namespace std;
  4. const int N=100005;
  5. int T,f,n,m=100000,sg[N],v[N],ti,ans;
  6. int read()
  7. {
  8. int r=0,f=1;
  9. char p=getchar();
  10. while(p>'9'||p<'0')
  11. {
  12. if(p=='-')
  13. f=-1;
  14. p=getchar();
  15. }
  16. while(p>='0'&&p<='9')
  17. {
  18. r=r*10+p-48;
  19. p=getchar();
  20. }
  21. return r*f;
  22. }
  23. int main()
  24. {
  25. T=read(),f=read();
  26. for(int i=f;i<=m;i++)
  27. {
  28. ti++;
  29. for(int j=2,la,nw,x,y;j<=i;j=la+1)
  30. {
  31. nw=0,x=i%j,y=i/j,la=min(i,i/y);
  32. if(x&1)
  33. nw^=sg[y+1];
  34. if((j-x)&1)
  35. nw^=sg[y];
  36. v[nw]=ti;
  37. if(la+1>j+1)
  38. {
  39. nw=0,x=i%(j+1),y=i/(j+1);
  40. if(x&1)
  41. nw^=sg[y+1];
  42. if(((j+1)-x)&1)
  43. nw^=sg[y];
  44. v[nw]=ti;
  45. }
  46. }
  47. for(int j=0;j<=m;j++)
  48. if(v[j]!=ti)
  49. {
  50. sg[i]=j;
  51. break;
  52. }
  53. }
  54. while(T--)
  55. {
  56. n=read(),ans=0;
  57. for(int i=1;i<=n;i++)
  58. ans^=sg[read()];
  59. ans?printf("1 "):printf("0 ");
  60. }
  61. return 0;
  62. }

bzoj 3576: [Hnoi2014]江南乐【博弈论】的更多相关文章

  1. bzoj 3576[Hnoi2014]江南乐 sg函数+分块预处理

    3576: [Hnoi2014]江南乐 Time Limit: 30 Sec  Memory Limit: 512 MBSubmit: 1929  Solved: 686[Submit][Status ...

  2. bzoj 3576: [Hnoi2014]江南乐

    Description 小A是一个名副其实的狂热的回合制游戏玩家.在获得了许多回合制游戏的世界级奖项之后,小A有一天突然想起了他小时候在江南玩过的一个回合制游戏. 游戏的规则是这样的,首先给定一个数F ...

  3. BZOJ 3576: [Hnoi2014]江南乐 (SG函数)

    题意 有nnn堆石子,给定FFF,每次操作可以把一堆石子数不小于FFF的石子平均分配成若干堆(堆数>1>1>1). 平均分配即指分出来的石子数中最大值减最小值不超过111.不能进行操 ...

  4. 【BZOJ】3576: [Hnoi2014]江南乐

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3576 很显然,这是一个multi-nim游戏. 注意:1.一个点的SG值就是一个不等于它的 ...

  5. 【bzoj3576】[Hnoi2014]江南乐 博弈论+SG定理+数学

    题目描述 两人进行 $T$ 轮游戏,给定参数 $F$ ,每轮给出 $N$ 堆石子,先手和后手轮流选择石子数大于等于 $F$ 的一堆,将其分成任意(大于1)堆,使得这些堆中石子数最多的和最少的相差不超过 ...

  6. [HNOI2014]江南乐 博弈论

    题面 题面 题解 首先我们知道一个关于除法的重要性质:对于一个固定的\(i\),表达式\(\frac{i}{m}\)的取值只有根号个. 因此我们考虑如何优化SG函数的求解. 观察到在取值相同的同一段中 ...

  7. 洛谷 P3235 [HNOI2014]江南乐 解题报告

    P3235 [HNOI2014]江南乐 Description 两人进行 T 轮游戏,给定参数 F ,每轮给出 N 堆石子,先手和后手轮流选择石子数大于等于 F 的一堆,将其分成任意(大于1)堆,使得 ...

  8. luoguP3235 [HNOI2014]江南乐 数论分块 + 博弈论

    感觉其实很水? 题目就是一个Multi SG游戏,只需要预处理出所有的\(sg\)值即可\(O(Tn)\)计算 对于计算\(sg[n]\)而言,显然我们可以枚举划分了\(x\)堆来查看后继状态 那么, ...

  9. 【bzoj3576】[Hnoi2014]江南乐 数论分块+博弈论

    Description 小A是一个名副其实的狂热的回合制游戏玩家.在获得了许多回合制游戏的世界级奖项之后,小A有一天突然想起了他小时候在江南玩过的一个回合制游戏. 游戏的规则是这样的,首先给定一个数F ...

随机推荐

  1. 怎样去除JSP页面提示:Cannot return from outside a function or method.

     今天用myeclipse10写JSP页面时出现: Cannot return from outside a function or method. onClick="return ch ...

  2. insertion-sort-list——链表、插入排序、链表插入

    Sort a linked list using insertion sort. PS:需要考虑left为head且只有一个数时,此时left->==NULL,若right<left则应更 ...

  3. iOS提交应用至App Store流程及真机调试 一,证书、配置文件

    前言:你要有苹果开发人员账号,我用的是个人账号.其次xcode为xcode 7,因为xcode 7须要 os x 系统 10.11 或更高的版本号, 所以os x 系统也须要 10.11 或更高的版本 ...

  4. 基本SCTP套接字编程常用函数

    sctp_bindx函数:允许SCTP套接字捆绑一个特定地址子集 #include <netinet/sctp.h> // 若成功返回0,出错返回-1 int sctp_bindx(int ...

  5. 【Java架构学习】Model1和Model2讨论

    在Java的学习中.这两个词的频率出现的非常高.那就是Model1和Model2.那么到底什么是Model1,什么是Model2呢?我们是不是又非常自然接受这两个概念.可是不知道其所以然呢?今天我们就 ...

  6. MapReduce简述、工作流程及新旧API对照

    什么是MapReduce? 你想数出一摞牌中有多少张黑桃.直观方式是一张一张检查而且数出有多少张是黑桃. MapReduce方法则是: 1. 给在座的全部玩家中分配这摞牌. 2. 让每一个玩家数自己手 ...

  7. 有奖试读&amp;征文——我们在互联网上奋斗的故事 获奖名单发布

    互联网是一个年轻的行业,同一时候也是一个推陈出新.不断进化的行业. 中国互联网行业在近期的十五年里.以如何的方式在"进化".我相信非常多奋斗在互联网战线上的你们最深有感触.读一读& ...

  8. Android 的assets文件资源与raw文件资源读取

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/zpf8861/article/details/34504183   res/raw和assets的同 ...

  9. About "self"

    Class method can't refer derectly to instance variables. Within the body of  a class method, self re ...

  10. css的书写规范,有哪些注意点

    一.框架为先,细节次之. 先写一些浮动,然后高与宽,然后再是细节方面的书写. 比如写一个浮动容器的样式,我们应该先让这个容器的框架被渲染出来,让大家看到基本的 网站框架.然后再再去渲染容器里面的内容. ...