A题
题解的方案挺好的
要形成回文,最后的 r,g,b,w 中,三偶一奇 或者 全为偶
两步:
1、验证初始的 r,g,b,w 是否满足
2、验证变色一次后的 r,g,b,w 是否满足(前提 r>0,g>0,b>0)
(变色两次(>0偶次)后,所有数字的奇偶没有变,没有意义 变色三次(>1奇次)后,得到的数字的奇偶与变一次相同,没意义)
B题
C题
c1 |c2…cn=A,则,对任意的i(1~n),ci | A=A
枚举 ans [ 0,511 ] ,第一个满足条件 对任意的i(1~n),ci | ans=ans 即为答案
(ci :枚举ai & bj ,j 范围[1,m])
时间复杂度 511* n* m
注意& | 运算优先级低于 ==
#include <bits/stdc++.h>
#define FOR(i,m,n) for(int i=m;i<=n;i++)
using namespace std;
int main() {
int n,m;
cin>>n>>m;
int a[300],b[300];
FOR(i,1,n)
scanf("%d",&a[i]);
FOR(i,1,m)
scanf("%d",&b[i]);
int ans;
for(ans=0;ans<=511;ans++){
int i;
for(i=1;i<=n;i++) {
int flag=0;
FOR(j, 1, m)
if ((a[i] & b[j]|ans)==ans){flag=1;break;}
if(!flag)break;
}
if(i==n+1)break;
}
cout << ans << endl;
return 0;
}