zoj 3870 Team Formation 位运算
来源:互联网 发布:byte[]转string java 编辑:程序博客网 时间:2024/05/07 21:48
//给n个数,找有多少队的两个数的异或值大于它们自己
//对于两个数中小的那个数的最高位在大的数中该位为0
//那么两个数异或所得的数比两个数大
//否则,这个数比大的数小
#include<cstdio>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std ;
const int maxn = 100010;
long long map[40];
int a[maxn] ;
long long solve(int m)
{
int pos = 0;
long long ans = 0;
while(m > 1)
{
if((m%2) == 0) ans+=map[pos] ;
m/=2;
pos++;
}
map[pos]++;
return ans ;
}
int main()
{
int n ;
int T;
scanf("%d" ,&T) ;
while(T--)
{
scanf("%d" ,&n);
memset(map , 0 ,sizeof(map)) ;
long long ans = 0;
for(int i = 1;i <= n;i++)
scanf("%d" ,&a[i]) ;
sort(a+1 , a+1+n) ;
for(int i = 1;i <= n;i++)
ans+=solve(a[i]) ;
printf("%lld\n", ans) ;
}
return 0;
}
//对于两个数中小的那个数的最高位在大的数中该位为0
//那么两个数异或所得的数比两个数大
//否则,这个数比大的数小
#include<cstdio>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std ;
const int maxn = 100010;
long long map[40];
int a[maxn] ;
long long solve(int m)
{
int pos = 0;
long long ans = 0;
while(m > 1)
{
if((m%2) == 0) ans+=map[pos] ;
m/=2;
pos++;
}
map[pos]++;
return ans ;
}
int main()
{
int n ;
int T;
scanf("%d" ,&T) ;
while(T--)
{
scanf("%d" ,&n);
memset(map , 0 ,sizeof(map)) ;
long long ans = 0;
for(int i = 1;i <= n;i++)
scanf("%d" ,&a[i]) ;
sort(a+1 , a+1+n) ;
for(int i = 1;i <= n;i++)
ans+=solve(a[i]) ;
printf("%lld\n", ans) ;
}
return 0;
}
0 0
- ZOJ 3870 Team Formation(位运算)
- ZOJ 3870 Team Formation 位运算
- zoj 3870 Team Formation 位运算
- ZOJ Team Formation 3870【位运算】
- ZOJ 3870Team Formation(位运算)
- ZOJ - 3870 Team Formation (位运算)
- ZOJ-3870 Team Formation(位运算)
- zoj 3870 Team Formation(位运算,超时)
- ZOJ 题目3870 Team Formation(数学,位运算)
- ZOJ-3870-Team Formation【位运算】【12th浙江省赛】
- zoj--3870--Team Formation(位运算好题)
- ZOJ 3870 Team Formation (异或运算)
- 巧用位运算 ZOJ 3870 Team Formation
- ZOJ 3870 Team Formation 亦或运算
- ZOJ 3870 Team Formation
- ZOJ 3870 Team Formation
- ZOJ 3870 Team Formation
- zoj #3870:Team Formation
- MongoDB基本例子
- Linux 信号列表
- Hibernate与Jpa的关系
- 我的报到帖
- HDU 排序
- zoj 3870 Team Formation 位运算
- php中遍历二维数组的几种方式
- C/C学习笔记/类型、运算符、表达式
- C/C++ 标准输入输出的坑
- 关于使用查表法实现十进制到二进制,八进制,十六进制的转换
- 叙述下这两天折腾的一个事情--tftp搭建,uboot,rootfs烧写的折腾
- Docker源代码之docker start
- [Erlang语言]百万级别的实时推送
- windows版本号的获取