Hash 算法(A - Crazy Search)

理解三种图像相似的Hash算法 前言 本来想自己写一篇总结图像相似hash算法,无意之中看到一篇博客真的是总结地很精妙。感觉自己远远不及,于是转载过来并添以补充代码实现。 原文链接:https://www.cnblogs.com/Kalafinaian/p/11260808.html 度量两张图片的相似度有许多算法,本文讲介绍工程领域中最常用的图片相似度算法之一——Hash算法。Hash算法准确的说有三种,分别为平均哈希算法(a... 阅读详情

Hash 算法入门(A - Crazy Search)

我相信 ,喜欢看电影,玩游戏的同学们,肯定知道下载完进行数据检测的过程,实际上这就是哈希算法的应用,也就是说,把一整个数据优化成更简的MD5码。有人可能会问能不能把MD5码转为原数据呢?要是你能做出来的话,我代表人类感谢你。

不过hash有点麻烦,而且有点困难,这次我从简单的字符转换讲吧,什么哈希冲突的,等我学的更多的时候补上吧。

  1. 我们直接怼一个题吧

    A - Crazy Search POJ - 1200

Many people like to solve hard puzzles some of which may lead them to madness. One such puzzle could be finding a hidden prime number in a given text. Such number could be the number of different substrings of a given size that exist in the text. As you soon will discover, you really need the help of a computer and a good algorithm to solve such a puzzle.
Your task is to write a program that given the size, N, of the substring, the number of different characters that may occur in the text, NC, and the text itself, determines the number of different substrings of size N that appear in the text.

As an example, consider N=3, NC=4 and the text “daababac”. The different substrings of size 3 that can be found in this text are: “daa”; “aab”; “aba”; “bab”; “bac”. Therefore, the answer should be 5.

input

The first line of input consists of two numbers, N and NC, separated by exactly one space. This is followed by the text where the search takes place. You may assume that the maximum number of substrings formed by the possible set of characters does not exceed 16 Millions.

output

The program should output just an integer corresponding to the number of different substrings of size N found in the given text.

Sample Input

3 4
daababac

Sample Output

5

那么我们如何做呢?

我们在这里可以把这个字母字符串变成一串数字串,然后每一个字符串分站由一个值构成,如果有相同的,不累加,如果没相同的则累加。

你可能会问,如果有不同的字符串,有一样的字母,但有不同的排序怎么办呢?

很简单,那就把位置也作为转化依据。

#include<cstdio>
#include<cstring>
using namespace std;
int a,b;
char c[160000000];
int hash[9999];			//保存转化字符
bool array[160000000];   //判断f值是否重复
int main(){
	while(scanf("%d %d",&a,&b)!=EOF){
			getchar();
		scanf("%s",&c);
		int d=strlen(c);
		int e=0;
		for(int i=0;i<d;i++){
			if(hash[c[i]]==0){  //将每个字符转化为c个数字,也可以看作c进制
				hash[c[i]]=e++;
			}
		}
		int sum=0;
		for(int x=0;x<=d-a;x++){   
			int f=0;
			for(int y=x;y<x+a;y++){    
				f=f*b+hash[c[y]];    //这里是转化十进制的过程,同时请注意f*b,这是避免有一样的字母,但有不同的排序的关键
			}
			if(!array[f]){     //利用bool来判断是否存在。
				sum++;
				array[f]=true;
			}
		}
		printf("%d\n",sum);
	}
	return 0;
} 

这里只是hash的起步题,本人小蒟蒻,只能慢慢的学习了。

如果有那个那个大佬讲的好,欢迎留言让我康康。o(〃^▽^〃)o

POJ 1200 Crazy Search(哈希算法)【模板】 Many people like to solve hard puzzles some of which may lead them to madness. One such puzzle could be finding a hidden prime number in a given text. Such number could be the number of different substrings of a given size that exist in the text. As you so 阅读详情

相关推荐

图像的相似度Hash算法(aHash的delphi实现).rar

Hash算法有三种,分别为平均哈希算法(aHash)、感知哈希算法你(pHash)和差异哈哈希算法(dHash)。 本代码针对平均哈希算法(aHash)

哈希算法之aHash算法

aHash、pHash、dHash是常用的图像相似度识别算法,原理简单,实现方便,个人把这三个算法作为学习图片相似度识别的入门算法。本次起,从aHash开始,对三个算法的基本原理和实践代码进行梳理。 aHash算法 Hash算法进行图片相似度识别的本质,就是将图片进行Hash转化,生成一组二进制数字,然后通过比较不同图片的Hash值距离找出相似图片。aHash中文叫平均哈希算法,顾名思义,在进行转化过程中将用到像素均值。 1.基本原理: (1)缩小尺寸。这样做会去除图片的细节,只保留结构、明暗等基本信息,

wyyang2的博客 1825

技术文档的语言表达:简洁、准确与易懂的平衡艺术

技术文档的语言表达不仅要简洁、准确,还需要能够打破技术壁垒,使不同背景的读者都能理解。这是一项需要技巧和经验的工作,它要求技术作者既要具备扎实的专业知识,又要具备清晰的表达能力。通过不断打磨语言的简洁性、准确性和易懂性,我们能够创造出一份高质量的技术文档,让知识的传递不再受限于语言的障碍。

人心有反复,好在山水有重逢。 4677

以图搜图(一):python aHash算法

文章目录感知哈希算法实现过程python代码 感知哈希算法 以图搜图的关键技术叫做”感知哈希算法”(Perceptual hash algorithm),它的作用是对每张图片生成一个”指纹”(fingerprint)字符串,然后比较不同图片的指纹。结果越接近,就说明图片越相似。 感知哈希算法包括均值哈希(aHash)、感知哈希(pHash)和dHash(差异值哈希)。aHash速度较快,但精确度较低;pHash则反其道而行之,精确度较高但速度较慢;dHash兼顾二者,精确度较高且速度较快。 之后我们会一一实

qq_43650934的博客 2418

基于立创·天猛星MSPM0G3507的简易PID电机控制入门项目实战

本文详细介绍了基于立创·天猛星MSPM0G3507开发板的简易PID电机控制入门项目实战。从硬件选型、电路设计、PCB布局,到软件编程中的编码器读取、PID算法实现与调参,手把手教你完成一个带屏幕显示的电机定速与定距控制项目,是学习嵌入式开发和经典PID控制算法的绝佳实践。

weixin_42596011的博客 510

如何在huggingface上申请下载使用llama2/3模型

huggingface-cli download --resume-download 模型名称 --local-dir 存放模型的位置 --local-dir-use-symlinks False --resume-download --token token序列号xxxxxxx。登录huggingface,在模型详情页面上,找到这个表单,填写内容,提交申请。需要使用梯子,country填写梯子的位置吧(比如美国)等待一小时左右,会有邮件通知。

a61022706的博客 1万+

【图像相似度计算】hash哈希算法实现

利用多种hash哈希算法,实现图像相似度计算

weixin_37763484的博客 1763

Apifox 自动化测试新增流程控制条件,复杂测试场景不再是问题

在 if 条件后的输入框填写请求接口得到的变量 viewed ,选择条件为「小于」,输入比较数值 10 ,并在 if 条件下添加「宠物下架处理」步骤。借助新增的自动化测试流程控制条件,测试人员就可以使用 Apifox 去实现更深层更多样的测试应用场景,帮助提升测试效率,减少复杂场景的测试操作。「查询新建宠物」、「修改宠物状态为已售出」和「查询宠物状态是否修改」步骤为当前在售宠物信息盘点的三个标准步骤,所以将这三个步骤合成一组。在循环中添加「查询在售宠物」和「修改宠物状态」步骤;

877

相似图片搜索原理一(ahash—c++实现)

ahash,全称叫做average hash,应该是phash(perceptual hash, 感知哈希)算法的一种。是基于图像内容搜索最简单的一种(search image by image),因此也有很多的局限性。主要用于由图像的缩略图搜原图,对于图像的旋转、平移、对比度和微变形等都无能为力,所以很局限。此次讲解主要分为两个部分,理论部分主要参考是网上的资料,最核心的应该是自己的c++代

小村长技术blog 9260

EWM与SAP ERP的数据集成

1、EWM与 SAPERP的无缝集成-基础数据&业务交易数据 2、SAP ERP设置:连接SAP ERP和EWM必须设置应用程序连接支持-ALE(Application Link Enabling) 3、ERP - EWM仓库数据集成: SAP ERP需要设置配置信息,连接ERP和EWM之间的库存管理应用,基于工厂+库存地点对应一个仓库号来进行配置; 在ERP中需要创建一个中间虚拟仓库,代表ERP仓库;“中间虚拟”仓库创建之后,工厂+库存地点的信息...

weixin_43899798的博客 3797

C++ muduo网络库知识分享01 - Linux平台下muduo网络库源码编译安装

Muduo is a multithreaded C++ network library based on the reactor pattern. muduo库的介绍就是:一个基于reactor反应堆模型的多线程C++网络库。 muduo网络库是C++语言开发的一个非常优秀的网络库,作者陈硕,muduo网络库在多线程环境下性能非常高,该系列文章会分享一些muduo库源码的知识,包括它的线程池源码...

大秦坑王的专栏 3万+

【哈希】POJ 1200 Crazy Search

大噶除夕快乐,新年快乐啦啦啦~【博文有些自己对这道自认为很坑的题的理解,嘻嘻嘻嘻】

L_X_ 353

SAP CO-PA数据传送避坑指南:销售开票与FI/MM记账的日常配置实操(含KEKF/KE4I/KEI2)

本文深入解析SAP CO-PA数据传送中的常见配置问题,特别是销售开票与FI/MM记账环节的实操避坑指南。通过KEKF/KE4I/KEI2等关键配置点的详细说明,帮助用户避免数据失真和重复记录,提升获利能力分析的准确性。文章结合实战案例,揭示官方文档未提及的'数据黑洞'形成机制,为SAP顾问提供实用的排雷手册。

weixin_26905487的博客 390

poj 1200 Crazy Search HASH 哈希表

Crazy SearchTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 13667 Accepted: 3753<br />DescriptionMany people like to solve hard puzzles some of which may lead them to madness. One such puzzle could be finding a hidden prime number in a given text

kongming_acm的专栏 765

手把手教你用Simulink搭建BPSK调制解调系统(附完整参数设置与波形分析)

本文详细指导如何使用Simulink搭建BPSK调制解调系统,涵盖从理论到实践的全流程,包括参数设置、模块连接和波形分析。重点解析调制解调中的关键参数和常见问题,如带通滤波器设计、载波同步等,帮助读者快速掌握BPSK系统的实现与调试技巧。

weixin_27741699的博客 423

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Crazy Search(hash算法)

Many people like to solve hard puzzles some of which may lead them to madness. One such puzzle could be finding a hidden prime number in a given text. Such number could be the number of different subs...

aaHua_ 434

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Crazy Search (哈希算法)

Crazy Search 给定一个字符串,其中含有不同的字母数量为m,现在求这个字符串中有多少个长度为n且长的互不相同的字符子串 举个例子, n=3, m=4 ,字符串 “daababac”. 长度为3的不同的子串分别是: “daa”; “aab”; “aba”; “bab”; “bac”. 因此, 答案是5. Input 第一行是两个整数n,m,,一个空格隔开。 接下来一行是...

厄尔尼诺的博客 1248

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

poj1200 Crazy Search 哈希hash

Crazy Search   Time Limit: 1000MS        Memory Limit: 65536K Total Submissions: 33005        Accepted: 9063 Description Many people like to solve hard puzzles some of which may lead them to madne...

cloudy_happy的博客 217

Crazy Search poj 1200 哈希

Many people like to solve hard puzzles some of which may lead them to madness. One such puzzle could be finding a hidden prime number in a given text. Such number could be the number of different sub...

Top_Spirit的博客 201

poj 1200 Crazy Search

<br />//poj 1200 Crazy Search (hash)<br />/*<br />这题一看就是hash,但是没有给数据范围,只有一个结果16M的提示,这就让我很难办了。<br />交了很多遍都RE,后来学别人把有数组瞎开到老大,又WA了N遍,后来才发现竟是cmp写错了,<br />呜呼哀哉!<br />PS: 貌似数据很弱,本题的算法很粗糙都能63MS过,而且好像只有小写字母,未考证。<br />*/<br />#include <iostream><br />#include <algo

birdforever的专栏 668

Poj~1200 Crazy Search (Hash哈希算法)

Many people like to solve hard puzzles some of which may lead them to madness. One such puzzle could be finding a hidden prime number in a given text. Such number could be the number of different subs...

gao506440410的博客 357

POJ 1200 Crazy Search 查找有多少种不同的子串(hash)

文章目录1.采用map解题2.采用hash查找 题目链接:http://poj.org/problem?id=1200 题目大意:给定子串长度,字符中不同字符数量,以及一个字符串,求不同的子串数量。 1.采用map解题 把子串插入map,map自动去重,最后输出map的size 结果是超时的。 超时代码: /** * @description: http://poj.org/problem?i...

Michael是个半路程序员 1192

POJ 1200-Crazy Search【滚动哈希】

描述 许多人喜欢解决难题,其中一些难题可能会使他们疯狂。一个这样的难题可能是在给定的文本中找到隐藏的素数。该数字可以是文本中存在的给定大小的不同子字符串的数量。您很快就会发现,您确实需要计算机的帮助和良好的算法来解决这一难题。 您的任务是编写一个程序,该程序给定子字符串的大小N,文本NC中可能出现的不同字符的数目以及文本本身,确定出现在字符串中的大小为N的不同子字符串的数目。文本。 例如,考虑N...

独钓门前月 607

POJ1200 Crazy Search

POJ1200 Crazy Search 本题题目没给数据范围!!!但是它给了输出结果不大于1.6* 107 所以本题就可以用字符串hash,只需要mod1.6*107就可以了 由于最多只有nc种字符,我们直接用nc进制字符串hash就行了 对于字符串hash,我们从直观上讲是每次都要hash=hash+pow(x,p)的 但是在实现的过程中我们可以hash=hash*p+x; 这样少掉一个pow...

AlexTYJ的博客 220

POJ 1200 Crazy Search //HASH

<br />Crazy SearchTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 12290 Accepted: 3339<br />DescriptionMany people like to solve hard puzzles some of which may lead them to madness. One such puzzle could be finding a hidden prime number in a give

hqd_acm的专栏 683
上一篇: Z算法(EXKMP)
下一篇: AC自动机
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值