
正文
The 2018 ACM-ICPC Asia Qingdao Regional Contest K XOR Clique
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
K XOR Clique
BaoBao has a sequence a1,a2,...,an. He would like to find a subset S of {1,2,...,n} such that ∀i,j∈S, ai⊕aj<min(ai,aj) and ∣S∣ is maximum, where ⊕ means bitwise exclusive or.
Input
There are multiple test cases. The first line of input contains an integer T, indicating the number of test cases. For each test case:
The first line contains an integer n (1≤n≤105), indicating the length of the sequence.
The second line contains n integers: a1,a2,...,an (1≤ai≤109), indicating the sequence.
It is guaranteed that the sum of n in all cases does not exceed 105.
Output
For each test case, output an integer denoting the maximum size of S.
Sample Input
3
3
1 2 3
3
1 1 1
5
1 2323 534 534 5
Sample Output
2给出n个数字,要求输出一个最长集合的长度,在这个集合中任意两个数两两异或后结果比原来小
3
2
相当于集合中每个数的二进制形式长度相等
#include<bits/stdc++.h>
using namespace std;
int s[];
int bit_width(unsigned int n)
{
unsigned int i = ; do {
++i;
} while ((n >> i)); return i;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n,a;
scanf("%d",&n);
memset(s,,sizeof(s));
int len1,len2,num=,maxx=;
for(int i=;i<n;i++)
{
scanf("%d",&a);
len1=bit_width(a);
s[len1]++; }
for(int i=;i<;i++)
{
maxx=max(maxx,s[i]);
}
printf("%d\n",maxx);
}
return ;
}






