http://www.lydsy.com/JudgeOnline/problem.php?id=3576

思路:由于数字巨大,因此N^2异或做法是过不了的,我们考虑将n个石子分成i堆,那么会有n%i堆n/i+1的石子,i-n%i堆n/i的石子。如果两个堆的石子数相同,那么他们异或起来就为0,因此,这两种石子堆,我们可以看做:每种至多只有1堆。这样就可以枚举n/i,然后可以避免计算很多重复的部分,时间复杂度为N^1.5

 1 #include<algorithm>
 2 #include<cstdio>
 3 #include<cmath>
 4 #include<cstring>
 5 #include<iostream>
 6 #define M 100100
 7 int T,F,n,sg[2000005],v[2000005],ans;
 8 int read(){
 9     int t=0,f=1;
10     char ch=getchar();
11     while (ch<'0'||ch>'9') {if (ch=='-') ch=-1;ch=getchar();}
12     while ('0'<=ch&&ch<='9'){t=t*10+ch-'0';ch=getchar();}
13     return t*f;
14 }
15 void init(){
16     for (int i=0;i<F;i++) sg[i]=0;
17     for (int i=F;i<=100000;i++){
18         for (int j=2,pos=0;j<=i;j=pos+1){
19             pos=i/(i/j);int k=i/j;
20             int nk1=i%j,nk=j-nk1;
21             v[sg[(nk&1)*(k)]^sg[(nk1&1)*(k+1)]]=i;
22             if (j+1<=std::min(pos,i)){
23                 nk1=i%(j+1),nk=j+1-nk1;
24                 v[sg[(nk&1)*(k)]^sg[(nk1&1)*(k+1)]]=i;
25             }
26         }
27         for (int j=0;;j++)
28          if (v[j]!=i){
29                 sg[i]=j;
30                 break;
31          }
32     }
33 }
34 int main(){
35     T=read();F=read();
36     init();
37     while (T--){
38         n=read();
39         ans=0;int x;
40         for (int i=1;i<=n;i++)
41          x=read(),ans^=sg[x];
42         if (!T) printf("%d\n",(!ans)?0:1);
43         else printf("%d ",(!ans)?0:1);
44     }
45 }

转载于:https://www.cnblogs.com/qzqzgfy/p/5592057.html

BZOJ 3576 江南乐相关推荐

  1. 【bzoj3576】 Hnoi2014—江南乐

    http://www.lydsy.com/JudgeOnline/problem.php?id=3576 (题目链接) 题意 给出一个数$F$,然后$n$堆石子,每次操作可以把一堆不少于$F$的石子分 ...

  2. P3235-[HNOI2014]江南乐【整除分块,SG函数】

    正题 题目链接:https://www.luogu.com.cn/problem/P3235 题目大意 TTT组游戏,固定给出FFF.每组游戏有nnn个石头,每次操作的人可以选择一个数量不少于FFF的 ...

  3. 【BZOJ3576】江南乐,博弈

    传送门 思路: 很厉害的一道博弈 虽说是暴力求SG函数,但是要加入分块优化 如果说直接按照规则求的话是O(n2)O(n^2)的 (这也是我会的--) 但是注意到⌊ni⌋⌊\frac n i⌋这个神奇的 ...

  4. Bzoj3576 [Hnoi2014]江南乐

    Time Limit: 30 Sec  Memory Limit: 512 MB Submit: 1555  Solved: 552 Description 小A是一个名副其实的狂热的回合制游戏玩家. ...

  5. OSChina 周六乱弹 —— 老用户与狗

    2019独角兽企业重金招聘Python工程师标准>>> Osc乱弹歌单(2018)请戳(这里) [今日歌曲] @yijiangxiyang :如今却忆江南乐,当时年少春衫薄.分享杨千 ...

  6. 科大星云诗社动态20210329

    [每日一诗] 菩萨蛮(其三) 韦庄 如今却忆江南乐,当时年少春衫薄.骑马倚斜桥,满楼红袖招. 翠屏金屈曲,醉入花丛宿.此度见花枝,白头誓不归. 词人所写的既是跟一个现实的女子离别的相思怀念,也可能是暗 ...

  7. 十年磨一剑,霜刃未曾试(纪念最爱——加内特)

    十年磨一剑,霜刃未曾试 空破天狼,近天狼 艰难的童年:梦回 1976 1976年5月19日,加内特出生在南卡罗莱纳一个叫毛丁的小镇.父母在他很小的时候,就分道扬镳.加内特跟着母亲过,但她没有太多能力来 ...

  8. 陌上谁家年少,足风流

    转自:http://mxjz219.blog.sohu.com/25481441.html 春日游,杏花插满头.陌上谁家年少,足风流.妾拟将身嫁与,一生休,纵被无情弃,不能羞. 在唐五代词中,我最爱的 ...

  9. # HNOI2012 ~ HNOI2018 题解

    HNOI2012 题解 [HNOI2012]永无乡 Tag:线段树合并.启发式合并 联通块合并问题. 属于\(easy\)题,直接线段树合并 或 启发式合并即可. [HNOI2012]排队 Tag:组 ...

最新文章

  1. 手机影音第六天 自定义播放器页面的实现(按钮暂时未监听)
  2. C#+Mapxtreme 实现一些GIS系统基本的功能
  3. php 1天,自学PHP之第1天-字符串函数 - 晓雨网
  4. 项目管理:五大过程组十大领域
  5. scipy.optimize.curve_fit-曲线拟合
  6. C++primer习题--第1章
  7. 史上首次!世界杯使用视频裁判
  8. 渴望订阅– RxJava常见问题解答
  9. 在python中、实例变量在类的内部通过_[宜配屋]听图阁
  10. 信息学奥赛一本通(1234:2011)
  11. 解决Spring+Quartz无法自动注入bean问题
  12. Spring : Spring @Transactional-嵌套事物处理
  13. HTML5锚点请用id代替name
  14. java去除网页中的广告和导航等信息_**css+html纯css怎样去除导航子菜单中的默认背景?**...
  15. 数据标注工具YEDDA
  16. 微信小程序订阅消息,并跳转指定页面
  17. 联想笔记本电脑整机拆解
  18. https://blog.csdn.net/Darryl_Tang/article/details/80545688
  19. ~蓝杰那些事儿~2014.06.21.~胡先生和魏小姐的故事
  20. 【游戏开发实战】使用Unity制作水果消消乐游戏教程(一):生成冰块阵列

热门文章

  1. Scala的特质(Trait)介绍
  2. XGBoost、LightGBM的详细对比介绍
  3. 链表倒置 (不额外开辟另一块空间)
  4. oracle按照时间过滤
  5. python的or操作符连接多个字符串含义是什么?
  6. 工作一年的状态与总结
  7. Individual Project-——word_frequency——final requirement
  8. 第一次创业失败的总结 - 产品设计
  9. 远程连接10.81.148.63 HP580
  10. 滑动门和翻转门实现的横竖双tab标签测试页面(附源码)