ARC124 B - XOR Matching 2(思维)

目录

Description

寻找 x,使得存在一种排列 $a[i] ;XOR ; b[i] =x,(1<=i<=n) $,输出所有满足的 x

State

\(1<=a[i],b[i]<=2^{30}\)

\(1<=n<=2000\)

Input

3
1 2 3
6 4 7

Output

1
5

Solution

数据范围并不是很大,\(x=a[1] \ XOR \; b[i]\),这样枚举所有可能满足条件的 \(x\) 值,然后逐一判断,所以内层的复杂度最大只能是 \(O(nlogn)\)

既然知道了 \(x\) 的值,每一个 \(i\) 对应的 \(x \; XOR \; a[i]\) 都会对应一个 \(b[j]\),利用桶 \(O(n)\) 就可以了

Code

const int N = 2e5 + 5;

    ll n, m, _;
    int i, j, k;
    ll a[N];
    ll b[N];
    map<int, int> mp;

signed main()
{
    //IOS;
    while(~ sd(n)){
        rep(i, 1, n){
            sd(a[i]);
            mp[a[i]] ++;
        }
        vector<int> res, ans;
        rep(i, 1, n){
            sd(b[i]);
            res.pb(b[i] ^ a[1]);
        }
        sort(res.begin(), res.end());
        res.erase(unique(res.begin(), res.end()), res.end());
        for(auto it : res){
            map<int, int> num = mp;
            int ok = 1;
            rep(i, 1, n){
                num[it ^ b[i]] --;
                if(num[it ^ b[i]] < 0){
                    ok = 0;
                    break;
                }
            }
            if(ok){
                ans.pb(it);
            }
        }
        pd(ans.size());
        for(auto it : ans){
            pd(it);
        }
    }
    return 0;
}

ARC124 B - XOR Matching 2(思维)

上一篇:react中导出、导入excel


下一篇:RocketMQ的简单使用