• 【佛山市选2013】JZOJ2020年8月7日提高组T3 海明距离


    【佛山市选2013】JZOJ2020年8月7日提高组T3 海明距离

    题目

    描述
    对于二进制串a,b,他们之间的海明距离是指两个串异或之后串中1的个数。异或的规则为:
    0 XOR 0 = 0
    1 XOR 0 = 1
    0 XOR 1 = 1
    1 XOR 1 = 0
    计算两个串之间的海明距离的时候,他们的长度必须相同。现在我们给出N个不同的二进制串,请计算出这些串两两之间的最短海明距离。
    数据
    对于30%的数据有1≤N≤100
    对于全部数据,有1≤N≤100000

    题解

    捕捉到一只翻车的HowarLi
    题意
    (n)个长度为5的十六进制的形式给出(n)个二进制串,求这(n)个二进制串中两两之间的最短海明距离
    海明距离的定义如题
    emmm……
    能说什么呢,数据过水将下述骗分大法放走了
    这道题的AC算法只有一句话
    将16进制转为10进制后取前1000个((n)没有1000就取到(n)),然后暴力匹配求最短海明距离

    Code

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #define inf 2147483647
    using namespace std;
    int t,n,i,j,k,num,x,s,ans,a[10],c[100005];
    char ch;
    int main()
    {
        freopen("T3.in","r",stdin);
        freopen("T3.out","w",stdout);
        scanf("%d",&t);
        while (t--)
        {
            memset(c,0,sizeof(c));
            scanf("%d",&n);
            for (i=1;i<=n;i++)
            {
                num=0;
                memset(a,0,sizeof(a));
                ch=getchar();
                while ((ch<'0'||ch>'9')&&(ch<'A'||ch>'F')) ch=getchar();
                while ((ch>='0'&&ch<='9')||(ch>='A'&&ch<='F'))
                {
                    num++;
                    if (ch>='0'&&ch<='9') a[num]=ch-'0';
                    if (ch>='A'&&ch<='F') a[num]=ch-'A'+10;
                    ch=getchar();
                }
                c[i]=a[5]*1+a[4]*16+a[3]*256+a[2]*4096+a[1]*65536;
            }
            ans=inf;
            sort(c+1,c+n+1);
            for (i=1;i<=min(1000,n);i++)
                for (j=i+1;j<=min(1000,n);j++)
                {
                    x=c[i]^c[j];
                    s=0;
                    for (k=0;k<=19;k++)
                        if ((x&(1<<k))!=0) s++;
                    ans=min(ans,s);
                }
            printf("%d
    ",ans);
        }
        fclose(stdout);
        fclose(stdout);
        return 0;
    }
    
  • 相关阅读:
    设置一个alias直接推到github
    JSON
    分部式类定义
    sql server 2008 不允许保存更改,您所做的更改要求删除并重新创建以下表 的解决办法
    ibatis 连接数据库时的错误
    ibatis 连接数据库
    [ASP.NET] C#字符串处理
    20130401学习笔记
    最大公约数和最小公倍数
    从客户端中检测到有潜在危险的 Request.Form 值 解决方案
  • 原文地址:https://www.cnblogs.com/Livingston/p/13455397.html
Copyright © 2020-2023  润新知