求集合s任意的a,b a^b<min(a,b)
一波模拟之后我们可以发现
二进制位数相等 最高位都为一就可以达成条件
统计一下每个二进制位的位数
最多的那个位数 里面的数值可以作为集合s 因为里面的任意的a,b a^b<min(a,b)
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int ge[50]={0};
int n;
scanf("%d",&n);
while(n--)
{
int x;
scanf("%d",&x);
int index=0;
while(x>1)
{
index++;
x/=2;
}
ge[index]++;
}
int maxn = *(max_element(ge,ge+50));
printf("%d\n", maxn);
}
}