传送门
分析
写的时候没注意到数据范围,一直在想dp的做法,后来才发现这个数据范围其实可以枚举暴力的
我们从0开始枚举答案,如果有一个答案满足对任意一个ai,均能找到一个bj,使得(a[i] & b[j]) | x) == x,那么就输出答案,即可
因为是从0开始枚举,所以答案肯定是最小的
时间复杂度大概是O(knm)
代码
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
const int N = 210;
int a[N],b[N];
int n,m;
int main(){
scanf("%d%d",&n,&m);
for(int i = 0;i < n;i++) scanf("%d",&a[i]);
for(int i = 0;i < m;i++) scanf("%d",&b[i]);
for(int x = 0;x < (1 << 9);x++){
int f = 0;
for(int i = 0;i < n;i++){
int ff = 0;
for(int j = 0;j < m;j++){
if(((a[i] & b[j]) | x) == x){
ff = 1;
break;
}
}
if(ff == 0){
f = 1;
break;
}
}
if(f == 0){
printf("%d",x);
return 0;
}
}
}