第一问是可以O(n)的

二进制位是独立的,所以直接分开算即可。。

记一个前缀和,开桶装0、1的个数     然后每次新加入一个点就直接更新就可以了

第二问就比较难了,,手玩只能发现最低位可以这么搞,对于高位还要考虑借位情况,借位情况有0有1,就不好离散

但是这么做是可以做出来的。。只是要在模意义下进行,,再考虑每次-的过程,都是一个前缀和-比他靠前的前缀和,

当差值>枚举次数时,显然影响是1

差值要考虑进位的情况,,这样似乎就形成了一个偏序关系,,就可以用树状数组了。。

码(借鉴):

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define ll long long
#define P 998244353
ll ans,n,j,i,k,lin,er[50],he[50][100005],lie[100005],dui[100005],v[100005],a[100005],tong[100006],p[100005];int lowbit(int a)
{return a&(-a);
}void jia(int o,int z)
{for(;o<=dui[0];o+=lowbit(o)){v[o]^=z;}
}
int cha(int o)
{int ans=0;for(;o;o-=lowbit(o)){ans^=v[o];}return ans;
}
int find(ll o)
{if(o<0)return 0;int l=1,r=dui[0]+1;while(l+1<r){int mid=(l+r)>>1;if(dui[mid]<=o)l=mid;else r=mid; }   return l;
}int main()
{   er[0]=1;for(i=1;i<=40;i++)er[i]=er[i-1]*2;scanf("%lld",&n);for(i=1;i<=n;i++){scanf("%lld",&a[i]);        }for(i=0;i<=20;i++)for(j=1;j<=n;j++){he[i][j]=he[i][j-1]^(a[j]&er[i]);if(he[i][j]&er[i])tong[i]++;}for(i=0;i<=20;i++){for(j=1;j<=n;j++){ans=1ll*(ans+1ll*tong[i]*er[i])%P;if(a[j]&er[i]){tong[i]=(n-j)-(tong[i]-1);}       }       }printf("%lld ",ans);ans=0;for(i=1;i<=n;i++)he[0][i]=he[0][i-1]+a[i];  for(k=0;k<=37;k++){  for (i=0; i<=n; i++) tong[i]=p[i]=he[0][i]&(er[k+1]-1);  dui[0]=0;sort(tong,tong+n+1); dui[++dui[0]]=tong[0];  memset(v,0,sizeof(v));  for (i=1; i<=n; i++)  if (tong[i]!=tong[i-1]) dui[++dui[0]]=tong[i];  int lin=0;  for (i=0; i<=n; i++){  lin^=cha(find(p[i]-er[k]))^cha(find(p[i]))^cha(find(p[i]+er[k]));  //cout<<er[k]<<" "<<lin<<" ";jia(find(p[i]),1);    } //cout<<lin<<endl; if (lin) ans|=er[k];  }  printf("%lld",ans);
}

2017.10.12 小Q的无敌异或 失败总结相关推荐

  1. bzoj 4017: 小Q的无敌异或

    4017: 小Q的无敌异或 Time Limit: 20 Sec  Memory Limit: 128 MB Submit: 593  Solved: 197 [Submit][Status][Dis ...

  2. bzoj 4017: 小Q的无敌异或(线段树)

    4017: 小Q的无敌异或 Time Limit: 20 Sec  Memory Limit: 128 MB Submit: 694  Solved: 227 [Submit][Status][Dis ...

  3. BZOJ4017 小Q的无敌异或 好题

    给一个序列 询问这个序列 1:所有子区间的异或值的和 2:所有子区间的和的异或值 第一个操作,拆二进制位,枚举右端点r,记录这个位前r个数字0/1的个数,右端点转移O(1) 第二个操作比较复杂,对于每 ...

  4. 2017.10.12 记者招待会

    2017.10.12  记者招待会 记者招待会 看到这个题目,你会不会吓一跳?一名普通的员工,哪里会参加记者招待会?是的,不是我参加.你脆弱的小心脏可以简单的修正一下,因为后面还有一个劲爆的消息:学生 ...

  5. 2017/10/12 表格与表单

    1 2 文本框 文本域男 女 1234 转载于:https://www.cnblogs.com/buzhiheyan/p/7658754.html

  6. 2017.10.12 礼物(zjoi2011) 失败总结

    听说n^4能过,于是愉快地敲了n^4  ,还带了两个最优性剪枝.. 结果事实证明是别人家的n^4...(wys?) 很奇怪玄学剪枝有时2^50次方都能过,为什么这个连1e10都过不了... TLE代码 ...

  7. 2017.10.14 【FOTILE模拟赛】L 失败总结

    很有代表性的一道题,什么都想不出来 首先有一个套路:区间的问题可以通过前缀和化成两点的问题 然后就是在区间找任意一/两个点的异或值最大, 在trie树上按二进制位从大到小贪心找就可以了 多组询问,所以 ...

  8. 2017.10.22 诸神眷顾的幻想乡 失败总结

    这个题有一个比较提示性的条件:叶子节点只有20个,点数总共是100000,那显然是要100000*20级别的效率 所以就考虑对叶子节点进行处理,首先要把树上的链拆成子串,所以就不会了.. 可以试图利用 ...

  9. 就「苏宁10.12广工龙洞校招会」歧视广工甚至所有非985/211学子有感

    「 邓禹南阳来,仗策归光武.孔明卧隆中,不即事先主.英雄各有见,何必问出处.」 -- [明]杨基 <感怀> 得知苏宁于广工龙洞校招会歧视广工学子和所有非985/211学子,作为众多广工学子 ...

最新文章

  1. 拿下赌场新客户,但马斯克“超级隧道”何时才能颠覆地面交通?
  2. Webservice超时问题
  3. [Java 安全]加密算法
  4. 成考高起专计算机统考试题,成考考试题型
  5. 江苏约谈滴滴、T3出行等6家企业 因疫情防控落实不到位
  6. springboot 手动提交事务_分布式事务开局第一篇,从数据库事务隔离级别说起
  7. 中心频点计算公式_LTE网各频段中心频点的计算方法_刘20170105
  8. 浙江农林大学蓝桥杯程序设计竞赛校选拔赛(同步赛)签到题ABFGHIJ
  9. JavaScript内置对象导读(1)
  10. 机器学习(3)——K-近邻算法改进约会网站的配对效果实例
  11. html网页中获取vf数据到mysql_怎样从HTML网页中获取SQL数据库里的数据
  12. 走一波 程序员必备精品软件大全
  13. 曲线运动与万有引力公式_专题三曲线运动与万有引力定律
  14. 基于ssm的记账管理系统设计与实现【毕业设计jsp】
  15. oracle打cve补丁,Oracle多个产品高危漏洞补丁安全预警
  16. ensp 链路聚合的配置
  17. 应用后台被回收,点击崩溃
  18. window终端光标消失
  19. Owin + WebApi + OAuth2 搭建授权模式(授权码模式 Part I)
  20. 深度清理C盘空间,让你的C盘多出20G

热门文章

  1. 七年级计算机考试知识点,七年级语文期中考试复习知识点整理
  2. Spark之GraphX
  3. 红橙Darren视频笔记 类加载机制(API28) 自己写个热修复 查看源码网站
  4. LeetCode-652. 寻找重复的子树
  5. 吴恩达《卷积神经网络》
  6. 判断并输出三个数abc 中的最大值 (C语言)
  7. 南通大学python期末考试试卷_模拟试卷C
  8. php jwt怎么保存再客户端,php – 如何将JWT添加到授权标头?
  9. java解析csv文件写入mysql_java读取cvs文件并导入数据库
  10. 为什么微软账号被暂时停用_微软向Win10 20H2推出测试版更新KB4586853修复多种已知问题...