xor clique zoj 2018 ACM-ICPC qingdao

求集合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);		
	}
}

猜你喜欢

转载自blog.csdn.net/weixin_41544329/article/details/83374375
今日推荐