分析:直接O(n^3)做是只有50分的,可以加一点小小的优化,就是c[k]可以从c[k-1]得到,但是还是只有60分,从宏观意义上是不能继续优化了。对于这类涉及到位运算的性质的题目,将每个数转化成二进制,两个数第i位异或值为1当且仅当两个数上这一位不同,我们只需要记录每一位上有多少个a为1,有多少个b为1,最后相乘再乘上这一位表示的大小就可以了.

#include<iostream>
#include<cstdio>
#include<cstring>
#define N 100005
#define ll long long
#define p 1000000007
using namespace std;
int n;
ll a[N],b[N],t1[50],t2[50];
ll sum;
inline int read()
{int x(0),f(1);char c=getchar();while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}return x*f;
}
inline ll add(ll a,ll b){return a+b>p?(a+b)%p:a+b;}
int main()
{freopen("xorarray.in","r",stdin);freopen("xorarray.out","w",stdout);n=read();for(int i=1;i<=n;i++)a[i]=read();for(int i=1;i<=n;i++)b[i]=read();for(int i=1;i<=n;i++){sum=0;for(int k=1;a[i]>=(1<<(k-1))-1;k++)if(a[i]&(1<<(k-1)))t1[k]++;for(int k=1;b[i]>=(1<<(k-1))-1;k++)if(b[i]&(1<<(k-1)))t2[k]++;for(int j=1;j<=31;j++)sum=add(sum,t1[j]*(i-t2[j])*(1<<(j-1))+t2[j]*(i-t1[j])*(1<<(j-1)));cout<<sum<<' ';}

  return 0;
}

转载于:https://www.cnblogs.com/zbtrs/p/7635222.html

清北学堂模拟赛d6t4 数组异或相关推荐

  1. 清北学堂模拟赛d6t3 反击数

    分析:显然是一道数位dp题,不过需要一些奇怪的姿势.常规的数位dp能统计出一个区间内满足条件的数的个数,可是我们要求第k个,怎么办呢?转化为经典的二分问题,我们二分当前数的大小,看它是第几大的,就可以 ...

  2. 清北学堂模拟赛d5t4 套路

    分析:题目非常短,看起来非常难,其实把图一画就明白了.有向图,每个点的出度都是1,那么整个图肯定是环上套链,链上的边无论怎样反向都不会形成环,环上的边也可以随便反向,但是最终不能反为同向的,总方案数减 ...

  3. 清北学堂模拟赛d3t2 b

    分析:一道比较让人头疼的数学题. 先考虑怎么让分出来的三角形相似,先不考虑每个三角形的具体边长,设每个三角形的周长为li,则可知必然有一个数g = gcd{li},每一个三角形的周长都是g的倍数,这样 ...

  4. 清北学堂模拟赛d2t4 最大值(max)

    题目描述 LYK有一本书,上面有很多有趣的OI问题.今天LYK看到了这么一道题目: 这里有一个长度为n的正整数数列ai(下标为1~n).并且有一个参数k. 你需要找两个正整数x,y,使得x+k< ...

  5. 清北学堂模拟赛d1t1 位运算1(bit)

    题目描述 LYK拥有一个十进制的数N.它赋予了N一个新的意义:将N每一位都拆开来后再加起来就是N所拥有的价值.例如数字123拥有6的价值,数字999拥有27的价值. 假设数字N的价值是K,LYK想找到 ...

  6. 清北学堂模拟赛day7 错排问题

    /* 考虑一下已经放回m本书的情况,已经有书的格子不要管他,考虑没有书的格子,不考虑错排有(n-m)!种,在逐步考虑有放回原来位置的情况,已经放出去和已经被占好的格子,不用考虑,剩下全都考虑,设t=x ...

  7. 清北学堂模拟赛d6t2 刀塔

    分析:看到最小值最大就很显然是二分了吧,二分一下最小值,把小于它的数给删掉,然后看每个数向左边能延伸多长,往右边能延伸多长,最后统计一下有没有可行答案就可以了. #include <cstdio ...

  8. 清北学堂模拟赛d3t6 c

    分析:比较神奇的一道题.要把树变成环肯定要先变成链,然后把链给拼接成环.接下来考虑一个脑洞大开的树形dp:设f[i][0]表示i不与父节点相连的链数,f[i][1]表示i与父节点相连的链数,先考虑怎么 ...

  9. 2020清北学堂秋季营感想——Hoarfrost

    2020清北学堂秋季营感想 前言:九月三十日放假以后,就马不停蹄地开始了这一次的奥赛培训.原先参加过暑假的提高组腾飞营,当时第一场模拟赛拿了第一,便觉得CSP的题目难度不会很高,普及+/提高-左右的难 ...

最新文章

  1. Android开发入门教程--Android应用程序结构分析
  2. 分享一个点赞超过100的漂亮ASP.NET MVC蓝色界面框架
  3. [读书笔记]TCP/IP详解V1读书笔记-1
  4. java - 条件嵌套
  5. 一休自评应聘:我是如何进入51CTO的?
  6. C++基础::一些接口汇总
  7. 聚焦改变字体,背景颜色
  8. AI和大数据结合,智能运维平台助力流利说提升竞争力
  9. SharedCache-共享缓存概况和初步运用实例(1)
  10. 台达PLC-EH3.铆压机,3轴,Z轴(SMC)电缸下降的距 离用的是位置加扭矩模式,台达PLC MODBUS通讯控制台达A2伺服扭矩
  11. FIR 带通滤波器参数设计流程
  12. 打造自己的win10精简系统
  13. 2020年过去了,我很怀念它
  14. conda管理python开发环境
  15. 【踩坑记录】导航时出现原地旋转,然后无法执行导航
  16. php可以用wamp哪个好,phpstudy和wamp哪个好
  17. Android 安全防护
  18. Exchange 2010 跟我走 之三-Exchange 2010 新功能
  19. 轨道看盘系统 通达信选股公式 看盘指标详解主图/副图
  20. 苹果手机有护眼模式吗_睡觉前忍不住刷手机?除了夜间模式,这些护眼小技巧赶快收好!...

热门文章

  1. bat脚本保存dir结果_MySQL备份脚本,应该这么写
  2. Java中Double除保留后小数位的几种方法
  3. Vue el-input实现动态显示type为textarea的文字数量、剩余字数
  4. CentOS 7 安装 JAVA环境(JDK 1.8)
  5. Maven依赖junit @Test报错解决
  6. Android开发笔记(五十四)数据共享接口ContentProvider
  7. 使用vue+elementUI+springboot创建基础后台增删改查的管理页面--(1)
  8. 各大排序算法的Objective-C实现以及图形化演示比较
  9. 2014广东高考分数线
  10. 在windows server2003邮件服务器的搭建