题意:

给出两个长度N相同的整数序列A和B,有N^2种方式从A中选择一个数Ai,从B中选择一个数Bj,让两个数相加,求这N^2个数的XOR,即异或。

思路:

暴力的求显然是会超时的,因为是异或,就考虑在最后的结果中以二进制表示每一位是0还是1。

在计算第i位是否为1的时候,显然不需要考虑更高位的影响,那么假设T = 2 ^ i,就将A和B中的每一个数对2T求余。

然后,只有以下两种情况可以满足第i位为1:

T <= Ai + Bj < 2T;

3T <= Ai + Bj < 4T.

将B排序之后,对于每一个Ai,第一种情况和第二种情况,都可以找到Bj对应的区间,善用lower_bound。如果两个区间长度加起来为奇数,那么这一位就是1。

一定用long long。

代码:

 #include <stdio.h>
#include <string.h>
#include <algorithm>
#include <vector>
using namespace std; const int N = ; long long a[N],b[N];
long long c[N],d[N]; bool f[]; int main()
{
int n; scanf("%d",&n); for (int i = ;i < n;i++)
{
scanf("%lld",&a[i]);
} for (int i = ;i < n;i++)
{
scanf("%lld",&b[i]);
} for (int i = ;i <= ;i++)
{
long long t = ((long long) << i); for (int j = ;j < n;j++)
{
c[j] = a[j] % ( * t);
d[j] = b[j] % ( * t);
} sort(d,d+n); for (int j = ;j < n;j++)
{
long long y = * t - c[j];
long long x = t - c[j]; int p1 = lower_bound(d,d+n,x) - d;
int p2 = lower_bound(d,d+n,y) - d; if (d[p2] >= y) p2--;
if (p2 >= n) p2--;
//if (p1 >= n) p1--; if (p2 >= p1 && (p2 - p1 + ) % ) f[i] = !f[i]; y = * t - c[j];
x = * t - c[j]; p1 = lower_bound(d,d+n,x) - d;
p2 = lower_bound(d,d+n,y) - d; if (d[p2] >= y) p2--;
if (p2 >= n) p2--;
//if (p1 >= n) p1--; if (p2 >= p1 && (p2 - p1 + ) % ) f[i] = !f[i];
}
} long long ans = ; for (int i = ;i <= ;i++)
{
if (f[i]) ans |= ((long long) << i);
} printf("%lld\n",ans); return ;
}

arc 092D Two Sequences的更多相关文章

  1. Convert BSpline Curve to Arc Spline in OpenCASCADE

    Convert BSpline Curve to Arc Spline in OpenCASCADE eryar@163.com Abstract. The paper based on OpenCA ...

  2. 黑马程序员——ARC机制总结和用ARC建立模型

    ARC 全称:Automatic Reference Counting 使用ARC 只需要在建立一个新的项目的时候把 下面的√打上 Xcode5以后都会默认建议开发者使用ARC机制 新的项目中如果有部 ...

  3. [LeetCode] Repeated DNA Sequences 求重复的DNA序列

    All DNA is composed of a series of nucleotides abbreviated as A, C, G, and T, for example: "ACG ...

  4. JSONKit在项目中使用设置(ARC与方法更新)

    在项目中经常会遇到解析json的情况,如果有同学想要解析JSON,那么JSONKit可以是一个不错的选择. git中JSONKit 的地址为:https://github.com/johnezang/ ...

  5. MRC迁移ARC之__block

    今日帮着同事把老项目从MRC迁移至ARC,大部分工作无非是删除release,[super dealloc]等方法,只要关闭了MRC编译选项后,编译器能自动帮你检查,block就有一些不一样了,发现许 ...

  6. Arc GIS engine10.2与VS2012的安装及匹配步骤

      本文章已收录于:   .embody { padding: 10px 10px 10px; margin: 0 -20px; border-bottom: solid 1px #ededed } ...

  7. [Leetcode] Repeated DNA Sequences

    All DNA is composed of a series of nucleotides abbreviated as A, C, G, and T, for example: "ACG ...

  8. 关于ARC下需要dealloc的相关内容

    今天在项目中使用KVO添加观察者模式的时候,在返回上一级的时候竟然崩了.可是,看了很久,代码没有问题.最后,终于知道了需要添加dealloc 防止以后再出错,所以,便纪录下来.关于ARC下需要手动释放 ...

  9. iOS 中 ARC 项目 兼容 MRC

    iOS 项目中MRC 和 ARC 项目的代码兼容问题: 1.ARC 项目中导入 MRC 第三方类的时候要在此类上添加 -objc-arc. 2.MRC 项目中导入 ARC 类的时候要在次类上添加 -f ...

随机推荐

  1. Excel--数据透视图

    原文:https://ke.qq.com/course/289406 1.数据源注意项 2. 3.选中数据源操作 任意选中数据源表格中的单元格(有值得单元格),插入数据透视表 默认数据源区域就是整个表 ...

  2. ajax 上传文件,显示进度条,进度条100%,进度条隐藏,出现卡顿就隐藏进度条,显示正在加载,再显示上传完成

    <form id="uploadForm" method="post" enctype="multipart/form-data"&g ...

  3. SQL函数汇总大全

    聚合函数对一组值计算后返回单个值.除了count(统计项数)函数以外,其他的聚合函数在计算式都会忽略空值(null).所有的聚合函数均为确定性函数.即任何时候使用一组相同的输入值调用聚合函数执行后的返 ...

  4. 1_02 Vue Slot

    slot 插槽 插槽内容 const component ={ template: ` <div> <slot></slot> </div> ` } n ...

  5. pl/sql中文乱码

    增加系统变量变量名:NLS_LANG变量值:SIMPLIFIED CHINESE_CHINA.ZHS16GBK

  6. 006-Object.assign

    一.Object.assign简要使用 是ES6新添加的接口,主要的用途是用来合并多个JavaScript的对象. Object.assign()接口可以接收多个参数,第一个参数是目标对象,后面的都是 ...

  7. js或jsp 获取项目路径常用方法

    可以引入一个jsp,这个jsp的内容如下: <%@page pageEncoding="UTF-8" contentType="text/javascript; c ...

  8. 切换py环境【转载】

    1.转自:https://blog.csdn.net/jasonfqw/article/details/72974187 方法不错的,比较简单. $ alias python='/usr/bin/py ...

  9. Tensorflow 搭建神经网络及tensorboard可视化

    1. session对话控制 matrix1 = tf.constant([[3,3]]) matrix2 = tf.constant([[2],[2]]) product = tf.matmul(m ...

  10. 编译用到boost相关的东西,问题的解决;以及和googletest库

    编译https://github.com/RAttab/reflect, 发现需要gcc4.7以上的版本才行.于是编译安装最新的gcc-6.2.0, 过程算顺利. http://www.linuxfr ...