题目链接:http://codeforces.com/problemset/problem/769/D

题意:求给出的 n 个数中有多少对数字的二进制形式恰好有 k 位不同

思路:两个数a, b的二进制形式恰好 k 位不同即 a ^ b 中 1 的个数,那么可以枚举.注意 n 为 1e5 枚举 ai 会tle,不过 ai 的范围是 1e4,显然有大量重复的元素;

可以先去重并记录每个元素出现的次数,再枚举每个元素即可;

代码:

 #include <iostream>
#include <stdio.h>
#define ll long long
using namespace std; const int MAXN = 1e5 + ;
ll a[MAXN], vis[MAXN]; int BitCount(unsigned int n){//求 n 二进制中 1 的数目
unsigned int tmp = n - ((n >> ) & ) - ((n >> ) & );
return ((tmp + (tmp >> )) & ) % ;
} int main(void){
int n, k, x, indx = ;
ll ans = ;
scanf("%d%d", &n, &k);
for(int i = ; i < n; i++){
scanf("%d", &x);
if(!vis[x]) a[indx++] = x;
vis[x]++;
}
for(int i = ; i < indx; i++){
if(k == ){
ans += (vis[a[i]] - ) * vis[a[i]] / ;
continue;
}
for(int j = i + ; j < indx; j++){
int cnt = a[i] ^ a[j];
if(k == BitCount(cnt)) ans += vis[a[i]] * vis[a[j]];
}
}
printf("%lld\n", ans);
return ;
}

最新文章

  1. 多线程之任务: Task 基础, 多任务并行执行, 并行运算(Parallel)
  2. 计算程序总行数的Python代码
  3. java.logging的重定向?
  4. UITableViewController和延时执行、自定义控件
  5. [CF#250 Div.2 D]The Child and Zoo(并查集)
  6. MySQL 配置优化
  7. linux中预留的$变量
  8. qmake的使用(可设置c编译器flag参数)
  9. [转][Android][Android Studio] *.jar 与 *.aar 的生成与*.aar导入项目方法
  10. SqlServer获取表结构语句
  11. Java RMI详解
  12. C语言字节对齐 __align(),__attribute((aligned (n))),#pragma pack(n)
  13. Pain for friend
  14. 同步特定源代码到 omni_rom源代码目录里面
  15. LDAP协议
  16. BZOJ1115:[POI2009]石子游戏Kam (博弈论)
  17. 老李分享:android app自动化测试工具合集
  18. python-ansible api2.0 多进程执行不同的playbook
  19. jvm - 垃圾回收
  20. python学习------面向对象进阶

热门文章

  1. JavaScript判断图片是否加载完成的三种方式 (转)
  2. swift实现AES解密
  3. block implicitly retains self to indicate this is 警告消除
  4. 利用ThinkPHP做项目步骤
  5. the art of seo(chapter eleven)
  6. listen 73
  7. 机器学习:simple linear iterative clustering (SLIC) 算法
  8. BZOJ_3671_[Noi2014]随机数生成器_set+贪心
  9. C++正确的cin输入
  10. bzoj 3230 相似子串 —— 后缀数组+二分