[Atcoder ARC124] XOR Matching 2-小思维 | 暴力

简介: 题意:给出n,两个数列a[1] -> a[n],b[1] -> b[n]问有多少个x,可以使得在我们任意一种方式排列b[]之后,有a[i] ^ b[i] == x (1 <= i <= n)思路:首先我们可以确定所有的答案一定在a[1] ^ b[i] (1 <= i <= n)之内,所以我们只需要将这些个x的解空间单独放到数组c[]里,然后遍历x的解空间c[],将c[i] ^ a[i]的结果记录在d[]里面,然后判断b[],d[]是否完全相同即可,如果完全相同,就可以记录答案,注意最终答案要进行去重

85d412c8a71e4f5eb7d17dc6595d0b94.png


样例输入 Copy


【样例1】

3
1 2 3
6 4 7


【样例2】

2
0 1
0 2


【样例3】

24
14911005 70152939 282809711 965900047 168465665 337027481 520073861 20800623 934711525 944543101 522277111 580736275 468493313 912814743 99651737 439502451 365446123 198473587 285587229 253330309 591640417 761745547 247947767 750367481
805343020 412569406 424258892 329301584 123050452 1042573510 1073384116 495212986 158432830 145726540 623594202 836660574 380872916 722447664 230460104 718360386 620079272 109804454 60321058 38178640 475708360 207775930 393038502 310271010


样例输出 Copy


【样例1】

1
5


【样例2】

0


【样例3】

8
107543995
129376201
139205201
160626723
312334911
323172429
481902037
493346727


题意:


给出n,两个数列a[1] -> a[n],b[1] -> b[n]

问有多少个x,可以使得在我们任意一种方式排列b[]之后,有a[i] ^ b[i] == x (1 <= i <= n)


思路:


首先我们可以确定所有的答案一定在a[1] ^ b[i] (1 <= i <= n)之内,所以我们只需要将这些个x的解空间单独放到数组c[]里,然后遍历x的解空间c[],将c[i] ^ a[i]的结果记录在d[]里面,然后判断b[],d[]是否完全相同即可,如果完全相同,就可以记录答案,注意最终答案要进行去重


int n,a[maxn],b[maxn],c[maxn],d[maxn];
bool check() {
    for(int i=1; i<=n; i++) {
        if(b[i] != d[i]) return false;
    }
    return true;
}
vector<int> ans;
int main() {
    n = read;
    for(int i=1; i<=n; i++) a[i] = read;
    for(int i=1; i<=n; i++) b[i] = read;
    sort(b+1,b+1+n);
    for(int i=1; i<=n; i++) {
        c[i] = a[1] ^ b[i];
        for(int j=1; j<=n; j++) {
            d[j] = a[j] ^ c[i];
        }
        sort(d+1,d+1+n);
        if(check()) ans.push_back(c[i]);
    }
    sort(ans.begin(),ans.end());
    ans.erase(unique(ans.begin(),ans.end()),ans.end());
    cout << ans.size() <<endl;
    if(ans.size() == 0) return 0;
    int siz = ans.size();
    for(int i=0;i<siz;i++){
        printf("%d\n",ans[i]);
    }
    return 0;
}



目录
相关文章
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的校园综合服务平台的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的校园综合服务平台的详细设计和实现(源码+lw+部署文档+讲解等)
286 5
|
存储 中间件
仓储设计实现问题之不应该把diff逻辑写在领域服务中,而是应该写在仓储中如何解决
仓储设计实现问题之不应该把diff逻辑写在领域服务中,而是应该写在仓储中如何解决
|
存储 机器学习/深度学习 算法
python 五种算法转置后翻转、层次旋转、递归分块、一次性旋转、环状替换 实现旋转图像【力扣题48】
python 五种算法转置后翻转、层次旋转、递归分块、一次性旋转、环状替换 实现旋转图像【力扣题48】
20. 有效的括号
20. 有效的括号
124 1
|
数据库 Android开发 开发者
构建高效Android应用:Kotlin协程的全面指南
【5月更文挑战第31天】 在移动开发领域,性能优化和流畅的用户体验是至关重要的。随着Kotlin语言在Android开发中的普及,其提供的协程功能已成为简化异步编程、提高应用响应性和效率的强大工具。本文将深入探讨Kotlin协程的概念、优势以及如何在Android应用中实现它们。通过实际案例分析,我们将展示如何利用协程提升数据处理能力,同时保持UI线程不被阻塞,确保用户界面流畅无阻。
|
C语言
每天一道C语言编程(2^k进制数)
每天一道C语言编程(2^k进制数)
126 0
|
算法
【AcWing算法基础课】第五章 动态规划(未完待续)(1)
求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且 总价值最大 。
141 0
【AcWing算法基础课】第五章 动态规划(未完待续)(1)
|
传感器
tb6612电机驱动与JGB37-520减速直流电机
tb6612电机驱动与JGB37-520减速直流电机
4891 0
|
SQL JSON 监控
无需重启应用,动态采集任意点位日志
借助日志治理的现有能力,我们能够在不重启应用的前提下,动态采集任意点位信息,同时由于日志治理在采集信息时会引入链路信息,在分析复杂调用问题时能够起到很好的效果。
380 0
无需重启应用,动态采集任意点位日志