题意:
给了N个5位的16进制数...现在问这其中两两做抑异或(二进制下).1最少为多少...
题解:
相信RP...循环100000次.. 每次随机抽取两个数比较...更新最大值...
Program:
#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<string.h>
#include<time.h>
#include<map>
#include<math.h>
#include<queue>
#define MAXN 100005
#define MAXM 8000005
#define oo 1000000007
#define ll long long
using namespace std;
char s[8];
int M[100005];
int count(int x,int y)
{
int sum=0,p=x^y;
while (p)
sum+=p%2,p>>=1;
return sum;
}
int main()
{
int T,y,n,d,i,j,x;
scanf("%d",&T);
while (T--)
{
scanf("%d",&n);
for (i=1;i<=n;i++)
{
scanf("%s",s);
x=1,M[i]=0;
for (j=0;j<5;j++)
{
if (s[j]>='0' && s[j]<='9') M[i]+=x*(s[j]-'0');
else M[i]+=x*(s[j]-'A'+10);
x*=16;
}
}
int ans=oo;
for (i=1;i<=1000000;i++)
{
x=rand()%n+1;
y=rand()%n+1;
if (x==y) continue;
ans=min(ans,count(M[x],M[y]));
}
printf("%d\n",ans);
}
return 0;
}