AtCoder Regular Contest 092 B Two Sequences
2018-03-18 14:38
513 查看
题目大意
给定两个长为 $n$ 个整数序列 $a_1, \dots, a_n$ 和 $b_1, \dots, b_n$ 。求所有 $a_i + b_j$($1\le i, j\le n$)的 XOR 值。
数据范围
$1\le n \le 200000$
$0\le a_i, b_j < 2^{28}$
解法
这道题比赛时没想出来,赛后想到解法了。
我们的目标是求出这 $n^2$ 个数中有奇数个还是偶数个数的二进制第 $k$ 位为 $1$,而不必求出其中究竟有几个数的二进制第 $k$ 位为 $1$ 。
若不考虑进位,则很容易求出这 $n^2$ 个数中有几个数二进制第 $k$ 位为 $1$。考虑进位时,我们也只需要知道(两数相加)向第 $k$ 位进位发生了多少次。
向第 $k$ 位进位发生了多少次这个问题可以这样求解:
将 $a_1, \dots, a_n$ 的前 $k$ 位 (第 $0$ 到第 $k-1$ 位)构成的数排序。枚举 $b_i$,二分搜索出前述序列中有多少个数与 $b_i$ 的前 $k$ 位之和大于等于 $2^{k}$ 。
UPD1
我描述的解法思路不够清晰简明,题解上给出的解法更好。
总而言之,这篇题解的参考价值不大(几乎没有参考价值),败笔。
相关文章推荐
- 【搜索】[AtCoder Regular Contest 092 F]Two Faced Edges
- 【AtCoder Regular Contest 092】C.2D Plane 2N Points(二分图匹配,匈牙利算法)
- AtCoder Regular Contest 092 C - 2D Plane 2N Points 贪心 匈牙利算法模板
- 思维定势--AtCoder Regular Contest 092 D - Two Sequences
- AtCoder Regular Contest 092 C - 2D Plane 2N Points 贪心 匈牙利算法模板
- 【AtCoder Regular Contest 092】D - Two Sequences(按位统计,归并)
- 【杂题】[AtCoder Regular Contest 092 D] Two Sequences
- 【杂题】[AtCoder Regular Contest 092 E]Both Sides Merger
- AtCoder Regular Contest 092-C
- 【AtCoder Regular Contest 092】C.2D Plane 2N Points(匈牙利算法/tuple+set 贪心)
- AtCoder Regular Contest 092 C - 2D Plane 2N Points 贪心 匈牙利算法模板
- AtCoder Regular Contest 092(部分)
- AtCoder Regular Contest 092 C - 2D Plane 2N Points 贪心 匈牙利算法模板
- AtCoder Regular Contest 093(AtCoder Beginner Contest 092)题解
- AtCoder Regular Contest 092 C - 2D Plane 2N Points 贪心 匈牙利算法模板
- AtCoder Regular Contest 092 C - 2D Plane 2N Points 贪心 匈牙利算法模板
- AtCoder Regular Contest 092 C - 2D Plane 2N Points 贪心 匈牙利算法模板
- Atcoder Regular Contest 092 A 的改编
- AtCoder Regular Contest 092 C - 2D Plane 2N Points 贪心 匈牙利算法模板
- AtCoder Regular Contest 075 E - Meaningful Mean(树状数组)