题目:codeforces 165E - Compatible Numbers
题意:给出n个数,然后每个数对应输出一个当前数组中与 Ai 与运算为 0 的数,没有的话输出-1
分析:简单的位运算题目,技巧性题目
首先,我们知道与运算的性质,就是只有同时为 1的时候才是1,那么假如 x&y=0 ,就是至少 x 的为1的为 y 全为0,其他为自由,假设为 1 ,那么 y = x^((1<<22)-1)。但是这样并不是全部的,这些位还可能是0,所以我们可以枚举这些位,然后处理。
具体看代码:
#include <cstdio>
#include <cstring>
#include <string>
#include <iostream>
#include <algorithm>
#include <vector>
#include <map>
#include <queue>
#define Del(a,b) memset(a,b,sizeof(a))
using namespace std;
const long long inf = 0x3f3f3f3f;
const long long N = 1000100;
const int M = 23;
int a[N],dp[1<<