标签:des style blog io ar color os sp for
Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)
Total Submission(s): 1569 Accepted Submission(s): 616
#include <iostream> #include <stdio.h> #include <algorithm> #include <string.h> #include <time.h> using namespace std; #define N 100000 char str[N+10][10]; int mark[20][20]; //make中存 i^j 的1的个数 int arr[]={0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4}; //0-F 中1的个数 int charToHex(char ch) //将0-F字符转换成10进制数计算 { if(isdigit(ch)) return ch-‘0‘; return ch-‘A‘+10; } void getMark() //求mark数组 { int i,j,s; for(i=0;i<16;i++) { for(j=i;j<16;j++) { s=i^j; mark[i][j]=mark[j][i]=arr[s]; } } } int geths(int x,int y) //求x到y的Hamming distance { int i,sum=0; for(i=0;i<5;i++) { int xx = charToHex(str[x][i]); int yy = charToHex(str[y][i]); sum+=mark[xx][yy]; } return sum; } int main() { int t; getMark(); scanf("%d",&t); while(t--) { int n; scanf("%d",&n); int i; for(i=0;i<n;i++) { scanf("%s",str[i]); } srand(time(NULL)); int x,y,mins=100; for(i=0;i<900000;i++) //随机900000次基本能过,在不超时的前提下,随机次数越多越好 { x=rand()%n; y=rand()%n; if(x==y) continue; int temp = geths(x,y); if(mins>temp) mins=temp; } printf("%d\n",mins); } return 0; } /* 2 2 12345 54321 4 12345 6789A BCDEF 0137F */
HDU 4217 Hamming Distance 随机化水过去
标签:des style blog io ar color os sp for
原文地址:http://www.cnblogs.com/qscqesze/p/4147275.html