题目大意:

给定 \(n\) 个数,找数对使其异或值为 \(k\),求满足这样数对的个数。

题目分析:

考验位运算功底的题目(实际上也不是很难),主要运用到了下列性质:

\[\begin{aligned}
\because a \oplus b = k \\
\therefore a \oplus k = b
\end{aligned}
\]

根据上述性质,题意就被转化为了:

对于任意一个数 \(a_x\),问 \(a_x \oplus k\) 在数列中的存在数量的和。

然后开个桶记录一下每个数的出现次数,求答案的时候我们先将当前数在桶中的数量减一,然后 \(ans\) 再加上当前数异或 \(k\) 在数列中存在的个数。

如果你使用数组开桶,则时间复杂度为 \(O(n)\),然而这里我为了防止出现很大很变态的数卡我数组,所以使用的 \(map\),时间复杂度 \(O(n \log n)\)

代码实现:

#include <bits/stdc++.h>
#define debug(x) cerr<<#x<<": "<<x<<endl;
#define int long long
using namespace std; inline int read()
{
int x=0,f=1;char ch=getchar();
while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
while (ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
return x*f;
} namespace Larry76{
const int MAX_SIZE = 1.1e6;
map<int,int>hashtable;
int ori[MAX_SIZE];
void main(){
//Code Here;
int n,k;
cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>ori[i];
hashtable[ori[i]]++;
}
int ans = 0;
for(int i=1;i<=n;i++){
hashtable[ori[i]]--;
ans += hashtable[ori[i] ^ k];
}
cout<<ans<<endl;
}
} signed main(){
#ifdef LOCAL
freopen("in.in","r",stdin);
freopen("out.out","w",stdout);
double c1 = clock();
#else
ios::sync_with_stdio(false);
#endif
//============================================
Larry76::main();
//============================================
#ifdef LOCAL
double c2 = clock();
cerr<<"Used Time: "<<c2-c1<<"ms"<<endl;
if(c2-c1>1000)
cerr<<"Warning!! Time Limit Exceeded!!"<<endl;
fclose(stdin);
fclose(stdout);
#endif
return 0;
}

题解 CF742B的更多相关文章

  1. CF742B Arpa's obvious problem and Mehrdad's terrible solution 题解

    Content 有一个长度为 \(n\) 的数组,请求出使得 \(a_i \oplus a_j=x\) 且 \(i\neq j\) 的数对 \((i,j)\) 的个数.其中 \(\oplus\) 表示 ...

  2. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  3. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  4. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  5. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  6. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  7. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  8. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  9. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

  10. CF100965C题解..

    求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...

随机推荐

  1. 使用Docker安装Apollo并使用SpringBoot连接配置中心

    上篇文章我们学习了Apollo的本地安装,如果还不会本地安装的朋友可以查看之前的文章进行了解和学习链接地址(https://www.cnblogs.com/eternality/p/17583023. ...

  2. EF 管理数据库架构

    本章会主要了解EF提供的独立迁移项目,用独立迁移项目自动创建dgml设计关系图和sql脚本. 迁移项目通常也叫(CodeFirst代码优先),在EF中迁移项目是在,在代码中设计数据库,每次对数据库的设 ...

  3. 查看Nginx是否启动

    查看Nginx进程 ps -ef | grep nginx 输出如下: root 1036 1 0 Jul15 ? 00:00:00 nginx: master process /www/server ...

  4. python移动文件

    #移动文件(目录) shutil.move("oldpos","newpos") shutil.move("D:/知乎日报/latest/一张优惠券, ...

  5. SpringCloud-Hystrix服务熔断与降级工作原理&源码

    先附上Hystrix源码图 在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用(RPC),在Spring Cloud可以用RestTemplate+Ribbon和Feign来调用 ...

  6. AI 一键去水印:教你无限量使用商业图片的技巧

    场景再现 刚开始注册账号(啥账号具体不表了,小编不喜欢的那个),想弄个闪亮,好看,有个性化的 Logo.作为一名非专美工小白人员,网上翻了很久作图工具,要么就是不好用,好用的大部分都收费.最后没办法, ...

  7. springboot整合nacos和dubbo

    0. 源码 源码: gitee 1. 版本 java: 1.8.0_281 nacos: 2.1.2 2. 创建项目 创建一个简单的springboot或者maven项目, 或者代码库(gitee/g ...

  8. 2.go语言基础类型漫游

    本篇前瞻 本篇是go语言的基础篇,主要是帮助大家梳理一下go语言的基本类型,注意本篇有参考go圣经,如果你有完整学习的需求可以看一下,另外,go语言的基本类型比较简单,介绍过程就比较粗暴. 基本类型 ...

  9. 【pandas小技巧】--DataFrame的显示参数

    我们在jupyter notebook中使用pandas显示DataFrame的数据时,由于屏幕大小,或者数据量大小的原因,常常会觉得显示出来的表格不是特别符合预期. 这时,就需要调整pandas显示 ...

  10. MIT6.s081/6.828 lectrue07:Page faults 以及 Lab5 心得

    本篇博客主要是复习 MIT6.s081/6.828 lectrue07:Page faults 以及记录 Lab5 :COW fork 的心得 值得一提的是,2020 年之前的版本第 5 个 lab ...