涂卡——位运算

Alice 参加了一场考试。这场考试共有 n^2 道题,题目在答题卡上排列成一个 n * n 的矩阵。
Alice 聪明地找到了题目的答案的规律。具体地,(i,j) 位置上的答案为 ai ^ bj 。
然而,Alice 把答案的行列涂反了。即第 i 行第 j 列的答案填涂到了第 j 行第 i 列。

请问 Alice 能答对多少道题。(双循环暴力会超时哦!!)

Input
第一行一个整数 n (1 ≤ n ≤ 3e5).
第二行 n 个整数 a1,a2,……,an (0 ≤ ai ≤ 1e9).
第三行 n 个整数 b1,b2,……,bn (0 ≤ bi ≤ 1e9).

Output
输出一个数,即 Alice 答对的题目数量.
输入
4
1 2 3 4
2 4 3 4

输出
6

样例:

正确答案         填涂答案
3525                3016
0616                5670
1707                2107
6070                5670

 解析:

(i,j),(j,i) 位置的答案相同,等价于 ai ^ bj == aj ^ bi
利用异或性质,可得 ai ^ bi == aj ^bj ,即统计有多少个不同 ai ^ bi 的个数

#include <bits/stdc++.h>
using namespace std;
#define int long long 
#define ios ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
typedef pair<int,int> PII;
const int N=2e6+10;
int a[N],b[N],p[N];
int n,cnt;
map <int,int> s;
int get(int x)
{
    if (s.count(x)==0) s[x]=++cnt;
    return s[x];
}
signed main()
{
    ios;
    cin>>n;
    for (int i=0;i<n;i++) cin>>a[i];
    for (int i=0;i<n;i++) cin>>b[i];
    for (int i=0;i<n;i++)
    {
        int k=(a[i]^b[i]);
        k=get(k);
        p[k]++;
    }
    int ans=0;
    for (int i=1;i<=cnt;i++) ans +=p[i]*p[i];
    cout<<ans;
    return 0;
}

相关推荐

  1. ——运算

    2023-12-11 20:00:04       55 阅读
  2. <span style='color:red;'>位</span><span style='color:red;'>运算</span>

    运算

    2023-12-11 20:00:04      36 阅读
  3. C#位移运算运算

    2023-12-11 20:00:04       44 阅读
  4. LeetCode 75| 运算

    2023-12-11 20:00:04       56 阅读
  5. 运算trick

    2023-12-11 20:00:04       64 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-11 20:00:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-11 20:00:04       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-11 20:00:04       82 阅读
  4. Python语言-面向对象

    2023-12-11 20:00:04       91 阅读

热门阅读

  1. 【力扣】刷题备忘录-动归-96. 不同的二叉搜索树

    2023-12-11 20:00:04       68 阅读
  2. SCAU:18051 勾股数

    2023-12-11 20:00:04       57 阅读
  3. 在装有 PostgreSQL 14 的 Red Hat8上安装 `pg_cron`

    2023-12-11 20:00:04       45 阅读
  4. 基于粒子群算法求解充电桩布局

    2023-12-11 20:00:04       62 阅读
  5. 如何编写编写干净的 PHP 代码

    2023-12-11 20:00:04       55 阅读
  6. 抖音视频评论区采集软件使用教程

    2023-12-11 20:00:04       136 阅读
  7. 智能家居IC

    2023-12-11 20:00:04       59 阅读
  8. 实验七 子网的划分

    2023-12-11 20:00:04       46 阅读
  9. CCSDS标准中使用的9/整数小波变换(Matlab实现)

    2023-12-11 20:00:04       53 阅读