首页 > 其他分享 >二进制:给定a b数组 在某种顺序下如果能在找到个c=a^b 而且 对c的&值f的值是最大的

二进制:给定a b数组 在某种顺序下如果能在找到个c=a^b 而且 对c的&值f的值是最大的

时间:2022-08-29 23:12:43浏览次数:85  
标签:二进制 long int 给定 数组 ans check

https://codeforces.ml/contest/1721/problem/D
因为最终答案必须是唯一的 然后从最高位开始 当且当a b 各个数子的当前位的1和0是一样的时候 就可以通过分配使得c数组当前位1 级所有当前位上的 0 1数量相同:
~b 等于 a 就满足条件 让ans+=1<<i

#include<bits/stdc++.h>
using namespace std;
#define int long long 
#pragma GCC optimize(3)
const int N = 1e5+10;
int n;
int a[N],b[N],c[N],d[N];
bool check(int x){
    for(int i=1;i<=n;i++)c[i]=a[i]&x;
    for(int i=1;i<=n;i++)d[i]=~b[i]&x;
    sort(c+1,c+1+n);
    sort(d+1,d+1+n);
    for(int i=1;i<=n;i++)if(c[i]!=d[i])return false;
    return true;
}
void cf(){
    cin>>n;
    for(int i=1;i<=n;i++)cin>>a[i];
    for(int i=1;i<=n;i++)cin>>b[i];
    int ans=0;
    for(int i=30;i>=0;i--){
        if(check(ans|1<<i))ans|=1<<i;
    }
    cout<<ans<<endl;
}
signed main(){
    ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    int _=1;
    cin>>_;
    while(_--){
        cf();
    }
    return 0;
}

标签:二进制,long,int,给定,数组,ans,check
From: https://www.cnblogs.com/liang302/p/16637730.html

相关文章

  • 双指针:给定两个升序数组a,b;b由a加一个值d转化而来 求d数组
    https://codeforces.ml/contest/1721/problem/C从n往前走因为对于ai他的最大值就是他对应下面的b数组当一个数ai的最小值和最大值都只能取这个数的时候那么后续的数也......
  • 树状数组
    241.楼兰图腾 分别统计i位置左边比a[i]小的数的个数m、右边比a[i]小的数的个数n,运用乘法原理:1.第一步从左边m个数中任选一个,有m种选法2.第二步从右边n个数中任选一个,......
  • Gym 101775J Straight Master(差分数组)
    题意:给你n个高度,再给你1n每种高度的数量,已知高度连续的35个能消去,问你所给的情况能否全部消去;例:n=4,给出序列1221表示高度1的1个,高度2的2个,高度3的2个,高度4的1个。那......
  • 稀疏数组
    1.当一个数组中大部分元素为0,或者为同一值的数组时,可以使用稀疏数组来保存该数组。2.处理方式为记录数组共几行几列把具有不同值的元素和行列及值记录在一个小规模数组......
  • numpy 数组 浅拷贝 地址
    对于numpy数组:importnumpyasnpa=np.array([1,2,3,4])b=a[0:2]b[0]=np.sum(a[:])/4修改b[0]的值会改变a的值,原因:https://blog.csdn.net/AManFromEarth/arti......
  • 数组
    1.长度是固定的,一旦被创建,大小就不能改变。2.元素类型必须相同。3.数据元素可以是任何数据类型,包括基本类型和引用类型。4..数组变量本身属于引用类型,也可以看出是对象,......
  • leetcode 每日一题 1470. 重新排列数组
    leetcode 每日一题 1470.重新排列数组classSolution{publicint[]shuffle(int[]nums,intn){int[]arr=newint[nums.length];for(......
  • 【leetcode】81. 搜索旋转排序数组 II
    原题地址:https://leetcode.cn/problems/search-in-rotated-sorted-array-ii/用循环遍历数组肯定能轻松找到target但要尽可能减少操作步骤,一般跟顺序有关的都是用二分,关键......
  • maybe_serialize() | WordPress序列化数据/数组/对象
    函数maybe_serialize(string|array|object$data)描述该WordPress函数可将数组/对象/字符串序列化。参数$data,(string|array|object)需要序列化的数据。返回值(m......
  • C++ 多维数组的访问
    1.可以把一维数组想象成一排士兵,把二维数组想象成一个士兵方阵,把三维数组想象成多个士兵方阵。这样,当你要找其中的一个士兵时,你只要知道他在哪个方阵(从0、1、2中选择),在哪......