CF1870B Friendly Arrays 题解
前言
这是一道大水题但我还是想了很久,主要考查选手对于位运算的理解。
正文
题目大意
已知有一个长度为
解题思路
我们可以把
由此可以知道,对于
AC代码
#include<bits/stdc++.h>
using namespace std;
inline char gc() {
static char buf[1 << 14], * p1 = buf, * p2 = buf;
return p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 1 << 14, stdin), p1 == p2) ? EOF : *p1++;
}
inline void read(int& x) {
x = 0; int f = 1; char ch = getchar();
while (ch < '0' || ch>'9') { if (ch == '-') f = -f; ch = getchar(); }
while (ch >= '0' && ch <= '9') { x = (x << 3) + (x << 1) + (ch ^ 48); ch = getchar(); }
x = (f == -1 ? -x : x); return;
}
inline void put(int x) {
if (x < 0) putchar('-'), x = -x;
if (x > 9) put(x / 10);
putchar(x % 10 + '0'); return;
}inline void write(int x) { put(x); putchar('\n'); }
#define N 200005
int n,m,ans,mint,maxt;
int a[N],b[N];
inline void work(){
read(n),read(m);
for(int i=1;i<=n;i++)
read(a[i]);
for(int i=1;i<=m;i++)
read(b[i]);
maxt=a[1];
for(int i=2;i<=n;i++){
maxt^=a[i];
}mint=maxt;
if(n%2==0){
int huo=0;
for(int i=1;i<=m;i++)
huo|=b[i];
mint=(a[1]|huo);
for(int i=2;i<=n;i++){
mint^=(a[i]|huo);
}
}else{
int huo=0;
for(int i=1;i<=m;i++){
huo|=b[i];
}maxt=a[1]|huo;
for(int i=2;i<=n;i++){
maxt^=a[i]|huo;
}
}
put(mint),putchar(' '),write(maxt);
}
int main() {
int T;read(T);
while(T--) work();
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示