标签:
Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)
思路:涨知识,还可以随机;
#include<bits/stdc++.h> using namespace std; #define ll long long #define pi (4*atan(1.0)) #define eps 1e-14 const int N=1e5+10,M=4e6+10,inf=1e9+10,mod=1e9+7; const ll INF=1e18+10; int getnum(char a) { if(a>=‘0‘&&a<=‘9‘) return a-‘0‘; return a-‘A‘+10; } int check(int x,int y) { int sum=0; while(x||y) { if(x%2!=y%2) sum++; x>>=1; y>>=1; } return sum; } char ch[N][10]; int mp[20][20]; int main(){ for(int i=0;i<16;i++) { for(int t=0;t<16;t++) mp[i][t]=check(i,t); } int T; scanf("%d",&T); while(T--) { int x; scanf("%d",&x); for(int i=0;i<x;i++) scanf("%s",ch[i]); int ans=inf; for(int i=0;i<=1000000;i++) { int k=0; int n=rand()%x; int m=rand()%x; if(n==m)continue; for(int t=0;t<5;t++) k+=mp[getnum(ch[n][t])][getnum(ch[m][t])]; ans=min(ans,k); } printf("%d\n",ans); } return 0; }
标签:
原文地址:http://www.cnblogs.com/jhz033/p/5931903.html