hdu 4712 Hamming Distance

题意:给出n个字符串,计算出每两个字符串的最小Hamming Distance。Hamming Distance是a xor b

题解:水题啊,本来暴力就能过,但是字符串的数据量有1e5,两重for肯定超时,所以拼人品的时候又到了,随机函数!字符串的范围是0 - 9 或者A - F,所以直接以十六进制输入就好了,十六进制输入用%x。随机的时候,随机次数是1e6,1e5的时候WA,1e7是TLE

代码

#include
#include
#include
#include
#define M 100010

using namespace std;

int a[M];

int main()
{
    int T;
    scanf("%d", &T);
    for(int t = 1; t <= T; t++)
    {
        int n;
        scanf("%d", &n);
        for(int i = 0; i < n; i++)
            scanf("%x", &a[i]);
        srand(time(0));
        int ans = M;
        for(int i = 1; i <= 1000000; i++)
        {
            int cnt = 0;
            int x = rand() % n;
            int y = rand() % n;
            while(x == y)y = rand() % n;
            int z = a[x] ^ a[y];
            while(z)
            {
                if(z % 2)cnt++;
                z = z / 2;
            }
            ans = min(ans, cnt);
        }
        printf("%d\n", ans);
    }
    return 0;
}


你可能感兴趣的:(训练赛,随机函数)