题意:

给出两个长度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. jquery图片懒加载效果

    1.要引入jquery 2.要引入underscore.js <!DOCTYPE html> <html lang="en"> <head> & ...

  2. 分布式任务队列Celery入门与进阶

    一.简介 Celery是由Python开发.简单.灵活.可靠的分布式任务队列,其本质是生产者消费者模型,生产者发送任务到消息队列,消费者负责处理任务.Celery侧重于实时操作,但对调度支持也很好,其 ...

  3. c# string 扩展方法

    场景:只显示一字符串的前50个字符,多余的用“...”省略号替代 如果不用扩展方法当然也可以实现,写一个静态方法,如下: public class StringUtil { /// <summa ...

  4. 使用natapp将本地服务映射到外网

    1.进入https://natapp.cn注册并登陆,然后下载客户端 2. 3. 4.打开客户端开启映射

  5. 剑指offer-矩阵覆盖

    题目描述 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形.请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?   使用dp,当n时,选着竖着放一个,那么后面的可能性为f( ...

  6. (1.7)mysql profiles分析

    mysql profiles分析 作用:记录会话查询SQL所用时间 1.开启 2.使用 [2.1]先使用一个查询 [2.2]然后再运行 show profiles; [2.3]查看执行过程中每个状态和 ...

  7. 前端 HTML body标签相关内容 常用标签 超链接标签 a标签

    超链接标签 <a> 超级链接<a>标记代表一个链接点,是英文anchor(锚点)的简写.它的作用是把当前位置的文本或图片连接到其他的页面.文本或图像,也可以是相同网页上的不同位 ...

  8. 八种排序算法--java实现(转)

    (转:http://blog.csdn.net/without0815/article/details/7697916) 8种排序之间的关系: 1, 直接插入排序 (1)基本思想:在要排序的一组数中, ...

  9. dataframe操作

    1.去除重复项drop_duplication #去除重复项drop_duplication import pandas as pd df = pd.DataFrame({"col1&quo ...

  10. 158A

    #include <iostream> #include <algorithm> using namespace std; int main() { int groups[10 ...