Codeforces Round #672 (Div. 2) B. Rock and Lever题解(思维+位运算)
题目链接
题目大意
给你一个长为n(n<=1e5)的数组,让你求有多少对a[i]和a[j] (i!=j)满足a[i]&a[j]>a[i]^a[j]
题目思路
这些有关位运算的题目肯定是要把数字变成二进制的
在二进制中某一位的数只能是0或者1
0^0=0 0&0=0
0^1=1 0&1=0
1^0=1 1&0=0
1^1=0 1&1=0
这样你就会发现如果要&操做所获得的值更大,只有可能是最高位的1所处的位置相同
然后计算一下贡献即可
代码
#include<set>
#include<map>
#include<queue>
#include<stack>
#include<cmath>
#include<cstdio>
#include<vector>
#include<string>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<unordered_map>
#define fi first
#define se second
#define debug printf(" I am here\n");
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
const ll INF=0x3f3f3f3f3f3f3f3f;
const int maxn=2e5+5,inf=0x3f3f3f3f,mod=1e9+7;
const double eps=1e-10;
int n,a[maxn],num[40];
signed main(){
    int _;scanf("%d",&_);
    while(_--){
        memset(num,0,sizeof(num));
        scanf("%d",&n);
        for(int i=1;i<=n;i++){
            scanf("%d",&a[i]);
            int tot=0;
            while(a[i]){
                a[i]=a[i]/2;
                tot++;
            }
            num[tot]++;
        }
        ll ans=0;
        for(int i=0;i<=32;i++){
            ans=(ans+1ll*num[i]*(num[i]-1)/2);
        }
        printf("%lld\n",ans);
    }
    return 0;
}
Codeforces Round #672 (Div. 2) B. Rock and Lever题解(思维+位运算)的更多相关文章
- Codeforces Round #672 (Div. 2   B. Rock and Lever   (位运算)
		题意:给你一组数,求有多少对\((i,j)\),使得\(a_{i}\)&\(a_{j}\ge a_{i}\ xor\ a_{j}\). 题解:对于任意两个数的二进制来说,他们的最高位要么相同要 ... 
- Codeforces Round #721 (Div. 2)A. And Then There Were K(位运算,二进制)  B1. Palindrome Game (easy version)(博弈论)
		半个月没看cf 手生了很多(手动大哭) Problem - A - Codeforces 题意 给定数字n, 求出最大数字k, 使得 n & (n−1) & (n−2) & ... 
- Codeforces Round #716 (Div. 2), problem: (B) AND 0, Sum Big位运算思维
		& -- 位运算之一,有0则0 原题链接 Problem - 1514B - Codeforces 题目 Example input 2 2 2 100000 20 output 4 2267 ... 
- Codeforces Round #590 (Div. 3) D. Distinct Characters Queries(线段树, 位运算)
		链接: https://codeforces.com/contest/1234/problem/D 题意: You are given a string s consisting of lowerca ... 
- Codeforces Round #320 (Div. 2) [Bayan Thanks-Round] A. Raising Bacteria【位运算/二进制拆分/细胞繁殖,每天倍增】
		A. Raising Bacteria time limit per test 1 second memory limit per test 256 megabytes input standard ... 
- Codeforces Round #267 (Div. 2) B. Fedor and New Game【位运算/给你m+1个数让你判断所给数的二进制形式与第m+1个数不相同的位数是不是小于等于k,是的话就累计起来】
		After you had helped George and Alex to move in the dorm, they went to help their friend Fedor play ... 
- Codeforces Round #672 (Div. 2) A - C1题解
		[Codeforces Round #672 (Div. 2) A - C1 ] 题目链接# A. Cubes Sorting 思路: " If Wheatley needs more th ... 
- Codeforces Round #524 (Div. 2)(前三题题解)
		这场比赛手速场+数学场,像我这样读题都读不大懂的蒟蒻表示呵呵呵. 第四题搞了半天,大概想出来了,但来不及(中途家里网炸了)查错,于是我交了两次丢了100分.幸亏这次没有掉rating. 比赛传送门:h ... 
- Codeforces Round #556 (Div. 2) - C. Prefix Sum Primes(思维)
		Problem Codeforces Round #556 (Div. 2) - D. Three Religions Time Limit: 1000 mSec Problem Descripti ... 
随机推荐
- 实在解决不了丢失vs2019之类的msvcr110.dll之类的问题
			因为msvcr110.dll也是微软DirectX的一个组件 如果在下载VC运行库没用的情况下,可能是因为要运行的程序是win32的,但是电脑和下载的程序是64的,所以 下载一个win32的即可 如果 ... 
- POI Excel 导入导出重点
			HSSF是指2007年以前的,XSSF是指2007年版本以上的 这个还是比较好用的,这些总结来自Apache的官方向导的点点滴滴 详细的请参考http://poi.apache.org/spreads ... 
- TCP的粘包和拆包问题及解决办法(C#)
			本文参考:https://blog.csdn.net/wxy941011/article/details/80428470 原因 如果客户端连续不断的向服务端发送数据包时,服务端接收的数据会出现两个数 ... 
- C语言经典100例-ex002
			系列文章<C语言经典100例>持续创作中,欢迎大家的关注和支持. 喜欢的同学记得点赞.转发.收藏哦- 后续C语言经典100例将会以pdf和代码的形式发放到公众号 欢迎关注:计算广告生态 即 ... 
- 【Redis】Redis 持久化之 RDB 与 AOF 详解
			一.Redis 持久化 我们知道Redis的数据是全部存储在内存中的,如果机器突然GG,那么数据就会全部丢失,因此需要有持久化机制来保证数据不会一位宕机而丢失.Redis 为我们提供了两种持久化方案, ... 
- 找出"吸血鬼数"(Java)
			吸血鬼数是指位数为偶数的数字,可以由一 对数字相乘而得到,而这对数字各包含乘积的一半 位数的数字,其中从最初的数字中选取的数字可以任意排序.以两个0结尾的数字是不允许的,例如,下列数字都是 " ... 
- ner处理数据的方式
			ner处理数据的方式biodef load_data(filename): features = [] labels = [] f = open(filename, encoding='utf-8') ... 
- CentOS7下一键小白搭建seafile pro云盘
			搭建前准备工作 vps或者云服务器,个人搭建使用建议腾讯云,公司搭建使用建议阿里云. 没有服务器的小伙伴可以下面链接进入看下,腾讯云的配置带宽会比阿里云的好点. 阿里云新人优惠服务器 腾讯云云上特惠 ... 
- ASP.NET Core 中基于工厂的中间件激活
			IMiddlewareFactory/IMiddleware 是中间件激活的扩展点. UseMiddleware 扩展方法检查中间件的已注册类型是否实现 IMiddleware. 如果是,则使用在容器 ... 
- jquery实现回车键执行ajax
			$('#txtKey').bind('keypress',function(event){ if(event.keyCode == "13") { alert(1) }}); 
