有两个数组,要你各选一个数,使它们异或的值在二进制中恰好有两位是 1.
看到只要两位不同,我们可以考虑用这一个方法(类似折半?).
把两边每个数对于每一位取反得到的数互相匹配,看有多少个相同的且在两边的.
那直接匹配相同我们可以用哈希表来实现.
那接着我们就会发现一个问题,就是可以能两个数取反的位置都是相同的,然后它们这样相同了,那它不能算,而我们会算上.
那我们考虑容斥,把这种情况减去.
因为取反的是同一位,那再取反就说明等于没取反,那我们就只用找两边有多少对相同的,把答案减去这个个数 即可.
要乘 是因为每一位都可以这样,就每对有三十次要减去.