`
xxx0624
  • 浏览: 31636 次
文章分类
社区版块
存档分类
最新评论

HDU4712+随机算法

 
阅读更多

随机算法

求n个20位的2进制串的MinDist。

Dist:两个串的异或结果中1的个数

/*
随机算法
*/
#include<algorithm>
#include<iostream>
#include<string.h>
#include<stdlib.h>
#include<stdio.h>
#include<math.h>
#include<queue>
#include<stack>
#include<time.h>
#include<map>
#include<set>
using namespace std;
typedef long long int64;
//typedef __int64 int64;
typedef pair<int64,int64> PII;
#define MP(a,b) make_pair((a),(b)) 
const int inf = 0x3f3f3f3f;
const double pi=acos(-1.0);
const int dx[]={1,-1,0,0};
const int dy[]={0,0,1,-1};
const double eps = 1e-8;
const int maxm = 100000+10;
const int maxn = 105;

char str[ maxm ][ 6 ];
int num1[ 22 ],num2[ 22 ];

int GetId( char aim ){
    int ans ;
    if( aim>='0'&&aim<='9' ) ans = aim - '0';
    else if( aim>='A'&&aim<='Z' ) ans = aim - 'A' + 10;
    return ans;
}

int solve( int x,int y ){
    int cnt = 0;
    int cc ;
    for( int i=0;i<5;i++ ){
        int aim = GetId( str[x][i] );
        cc = 4;
        while( cc ){
            num1[ cnt++ ] = aim%2;
            aim /= 2;
            cc -- ;
        }
    }
    //printf("cnt = %d\n",cnt);
    cnt = 0;
    for( int i=0;i<5;i++ ){
        int aim = GetId( str[y][i] );
        cc = 4;
        while( cc ){
            num2[ cnt++ ] = aim%2;
            aim /= 2;
            cc -- ;
        }
    }
    //printf("cnt = %d\n",cnt);
    cnt = 0;
    for( int i=0;i<20;i++ ){
        if( num1[i]!=num2[i] )
            cnt ++ ;
    }
    return cnt ;
}
    
int main(){
    int T;
    scanf("%d",&T);
    while( T-- ){
        int n;
        scanf("%d",&n);
        for( int i=0;i<n;i++ )
            scanf("%s",str[i]);
        srand( time(NULL) );
        int ans = inf;
        int x,y;
        for( int i=0;i<180000;i++ ){
            x = rand()%n;
            y = rand()%n;
            if( x==y ) continue;
            int temp = solve( x,y );
            if( temp<ans )
                ans = temp;
        }
        printf("%d\n",ans);
    }
    return 0;
}


分享到:
评论

相关推荐

    HDU+2000-2099+解题报告

    HDU(杭州电子科技大学)在线评测系统是许多编程竞赛爱好者和学习者经常访问的平台,它提供了大量的算法题目供用户练习和挑战。这个压缩包文件“HDU 2000-2099 解题报告”显然包含了在这个题号范围内的一些问题、...

    hdu ACM代码 每种算法都有分类

    HDU ACM代码集合是针对ACM(国际大学生程序设计竞赛,International Collegiate Programming Contest)的一份资源,这个压缩包中的代码涵盖了多种算法,是参赛者或对算法学习感兴趣的人宝贵的参考资料。ACM竞赛旨在...

    HDU算法讲解的PPT

    HDU算法讲解的PPT是一份非常有价值的教育资源,由知名教育机构HDU(杭州电子科技大学)的lcy老师精心制作并讲解。这份PPT涵盖了算法的各个方面,是学习和提升算法能力的理想材料。标签“算法”、“讲解”和“经典”...

    算法分析 递归与分治策略 动态规划 贪心算法 分支限界法 随机化算法等算法

    在IT领域,算法是解决问题的核心工具,而递归与分治策略、动态规划、贪心算法、回溯法、分支限界法以及随机化算法都是其中的重要组成部分。这些算法不仅适用于计算机科学,也在数据结构、优化问题和复杂计算中扮演着...

    hdu.zip_ACM_hdu

    在ACM(国际大学生程序设计竞赛)中,数据结构与算法是至关重要的组成部分,而"杭电"(杭州电子科技大学)的在线判题系统HDU提供了许多这类问题供参赛者练习。"hdu.zip_ACM_hdu"这个压缩包很可能是包含了一道或若干道...

    hdu1020.rar_hdu1020

    HDU 1020,又被称为"猜数字",是一个经典的在线算法竞赛题目,源自中国杭州电子科技大学(Hangzhou Dianzi University)的在线评测系统HDU ACM/ICPC。这个题目要求参赛者编写一个程序,模拟一个猜数字的游戏过程,...

    hdu题目分类

    ### hdu题目分类知识点概述 本篇将对“hdu题目分类”中提及的各种类型问题进行详细介绍,旨在帮助读者更好地理解这些题目所涉及的核心概念和技术点,并为编程竞赛中的实战训练提供参考。以下是对每道题目的具体分析...

    hdu pku ural 题目分类

    7. **概率与统计**:随机化算法、概率计算等。 8. **几何与图形**:平面几何、三维几何、计算几何等。 9. **编码与解码**:位操作、编码算法(如Base64、ZigZag编码等)。 10. **网络流与最大匹配**:最大流、最小割...

    算法-连连看(HDU-1175)(包含源程序).rar

    本压缩包中的资源——"算法-连连看(HDU-1175)(包含源程序).pdf"很可能提供了一个关于如何用编程语言实现连连看算法的详细讲解,包括源代码示例。 连连看算法的实现主要分为以下几个步骤: 1. **游戏初始化**:...

    算法-命运(HDU-2571)(包含源程序).rar

    标题中的“算法-命运(HDU-2571)”是一个编程竞赛题目,通常来自于各大在线编程平台,如HDU(杭州电子科技大学在线评测系统)等。这类问题旨在测试和提升参赛者的算法设计和编程能力。从描述来看,这个压缩包包含了...

    acm课件简单数学题(杭电)(HDU)

    在ACM(国际大学生程序设计竞赛,International Collegiate Programming Contest,简称ICPC)中,数学是至关重要的一部分,尤其是在解决杭电(Hangzhou Dianzi University,简称HDU)的题目时。本课件"acm课件简单...

    模式识别重点_hdu.pdf

    "模式识别重点_hdu.pdf" 模式识别是机器学习和人工智能领域中的一种重要技术,涉及到数据分析、概率论和优化算法等多个方面。下面是从给定的文件中提取的相关知识点: 1. 概率论:文档中出现了多个概率论相关的...

    hdu4405_HDOJ_ACM_

    【标题】"hdu4405_HDOJ_ACM_" 指的是在杭州电子科技大学(HDU)的在线判题系统(Online Judge,简称OJ)上的一道编程竞赛题目,它属于HDOJ ACM系列。这个系列通常与国际大学生程序设计竞赛(ACM/ICPC)相关,这类...

    应数所有考点总结_hdu.pdf

    这份资料主要涵盖了数学和概率论的一些重要...这些内容反映了高等数学和概率论的基础知识,包括微积分、随机过程、马尔可夫链和概率分布等,这些都是在IT领域,尤其是数据分析、机器学习和算法设计中不可或缺的工具。

    (HDUACM202002版_11)-组合博弈.pptx

    取子游戏的算法实现步骤包括:将所有终结位置标记为必败点,将所有一步操作能进入必败点的位置标记为必胜点,以此类推,直到找到所有的必败点和必胜点。 Nim 游戏是一个经典的组合博弈示例。在 Nim 游戏中,两个...

    ACM新生课件

    - 参加训练赛,体验不同形式的比赛(如单人模式、随机组队模式等)。 - **日常训练**: - 入队后每周会有一节课程和一场训练赛; - 训练赛题目多样化,旨在巩固所学知识。 #### 五、入门知识 - **ACM输入输出...

    kuangbin acm模板超级好用

    2.3 扩展欧几里得算法(求 ax+by=gcd 的解以及逆元) . . . . . . . . . . . . . . . 27 2.4 求逆元 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 2.4.1 扩展欧几里德法 ...

    ACM(Association for Computing Machinery)是国际计算机学会,其举办的 ACM-ICPC(国际大学生程序设计竞赛)是全球最具影响力的大学生编程竞赛之一 ACM-IC

    以下是关于 ACM 技术细节的一些随机说明: ### 算法优化 在 ACM 竞赛中,算法优化是关键。减少冗余计算是常见的优化手段之一。例如,在处理大规模数据时,通过剪枝、动态规划等方法可以有效降低时间复杂度。以 HDU...

    动态规划详解

    可能是对动态规划深入讲解的一堂课,而 "(HDUACM2010版_04)动态规划.ppt"、"3_ACM动态规划.ppt" 和 "hdu1160.txt" 可能是针对ACM竞赛的动态规划训练资料,特别是"hdu1160.txt"可能是一个具体的背包问题实例。...

    ACM程序设计 简单数学题

    虽然在ACM中概率论问题相对较少,但某些题目会涉及随机抽样、期望值计算等概念。了解概率分布,如二项分布、泊松分布等,有时能帮助解决复杂问题。 六、图论 虽然不是严格意义上的数学,但图论在ACM中应用广泛。树...

Global site tag (gtag.js) - Google Analytics