Codeforces #664(Div.2) A~C

A题

题解的方案挺好的
要形成回文,最后的 r,g,b,w 中,三偶一奇 或者 全为偶

两步:
1、验证初始的 r,g,b,w 是否满足
2、验证变色一次后的 r,g,b,w 是否满足(前提 r>0,g>0,b>0)

(变色两次(>0偶次)后,所有数字的奇偶没有变,没有意义 变色三次(>1奇次)后,得到的数字的奇偶与变一次相同,没意义)

B题

Codeforces #664(Div.2) A~C_第1张图片

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 
#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;
}

你可能感兴趣的:(Codeforces)