CF 514C(hash)
题意:输入a个字符串和b个待检测字符串。问待检测字符串是否可以由某个已知字符串改变且只改变一个字母得到。
分析:字符串hash,枚举待测字符串每一位进行修改,看是否符合,好像正解是trie树。
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#define N 600010
#define LL long long
using namespace std;
const int HASH=;
const int MAXN=;
const LL MOD=10000000000007ll;
struct HASHMAP
{
int head[HASH],next[MAXN],size;
LL state[MAXN];
void init()
{
size=;
memset(head,-,sizeof(head));
}
bool find(LL val)
{
int h=val%HASH;
for(int i=head[h];~i;i=next[i])
{
if(val==state[i])return true;
}
return false;
}
int insert(LL val)
{
int h=val%HASH;
for(int i=head[h];~i;i=next[i])
{
if(val==state[i])
return ;
}
state[size]=val;
next[size]=head[h];
head[h]=size++;
return ;
}
}H;
LL p[N];
const LL SEED=;
char s[N];
int main()
{
int n,m;
scanf("%d%d",&n,&m);
p[]=1ll;
for(int i=;i<N;i++)p[i]=p[i-]*SEED%MOD;
H.init();
for(int i=;i<=n;i++)
{
scanf("%s",s);
int len=strlen(s);
LL val=;
for(int j=;j<len;j++)val=(val*SEED+s[j])%MOD;
H.insert(val);
}
for(int i=;i<=m;i++)
{
scanf("%s",s);
int len=strlen(s);
LL val=;
for(int j=;j<len;j++)val=(val*SEED+s[j])%MOD;
bool flag=false;
for(int j=;j<len&&!flag;j++)
{
LL tmp=p[len--j]*s[j]%MOD;
LL cnt=((val-tmp)%MOD+MOD)%MOD;
for(int k=;k<;k++)
{
if(k+'a'!=s[j])
{
LL nh=p[len--j]*(k+'a')%MOD;
if(H.find((cnt+nh)%MOD))
{
flag=true;
break;
}
}
}
}
if(flag)puts("YES");
else puts("NO");
}
}
CF 514C(hash)的更多相关文章
- 哈希(Hash)与加密(Encrypt)相关内容
1.哈希(Hash)与加密(Encrypt)的区别 哈希(Hash)是将目标文本转换成具有相同长度的.不可逆的杂凑字符串(或叫做消息摘要),而加密(Encrypt)是将目标文本转换成具有不同长度的.可 ...
- 数据结构之哈希(hash)表
最近看PHP数组底层结构,用到了哈希表,所以还是老老实实回去看结构,在这里去总结一下. 1.哈希表的定义 这里先说一下哈希(hash)表的定义:哈希表是一种根据关键码去寻找值的数据映射结构,该结构通过 ...
- redis学习-散列表常用命令(hash)
redis学习-散列表常用命令(hash) hset,hmset:给指定散列表插入一个或者多个键值对 hget,hmget:获取指定散列表一个或者多个键值对的值 hgetall:获取所欲哦键值以及 ...
- 【Redis】命令学习笔记——哈希(hash)(15个超全字典版)
本篇基于redis 4.0.11版本,学习哈希(hash)相关命令. hash 是一个string类型的field和value的映射表,特别适合用于存储对象. 序号 命令 描述 实例 返回 HSET ...
- 《数据结构与算法分析——C语言描述》ADT实现(NO.05) : 散列(Hash)
散列(Hash)是一种以常数复杂度实现查找功能的数据结构.它将一个关键词Key,通过某种映射(哈希函数)转化成索引值直接定位到相应位置. 实现散列有两个关键,一是哈希函数的选择,二是冲突的处理. 对于 ...
- ruby 对象转换哈希(Hash)
通过 ActiveRecord 从数据库的某张数据表(table)中获取的对象如何转换成为 Hash orders_table 是一张订单信息表,对应的 model 为 Orders @order = ...
- HDU 1880 魔咒词典 (Hash)
魔咒词典 Time Limit: 8000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- 哈希表(hash)详解
哈希表结构讲解: 哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构.也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度. ...
- 哈希(hash)理解
转载自https://www.cnblogs.com/mingaixin/p/4318837.html 一.什么是哈希?(一种更复杂的映射) Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就 ...
随机推荐
- boost之program_options库,解析命令行参数、读取配置文件
一.命令行解析 tprogram_options解析命令行参数示例代码: #include <iostream> using namespace std; #include <boo ...
- document.body的一些用法以及js中的常见问题
document.body的一些用法以及js中的常见问题 网页可见区域宽: document.body.clientWidth; 网页可见区域高: document.body.clientHeight ...
- webform中几个常用的控件
一,简单控件 1,Lable——标签:在网页中呈现出来的时候会变成span标签 属性:Text——标签上的文字 BackColor,ForeColor——背景色,前景色 Font——字体 Bold- ...
- MyBatis深入理解一
Mybatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis .iB ...
- js 常用方法记事本
1.获取被选中行的名称<tab选项卡中为iframe> /* S 获取首页被选中的选项卡名称 */ var currTab = $("#layout_center_tabs&qu ...
- HDU3709:Balanced Number(数位DP+记忆化DFS)
Problem Description A balanced number is a non-negative integer that can be balanced if a pivot is p ...
- 用js制作的几个效果
一,表格光柱效果(奇偶行不同颜色,鼠标移上变色) <html xmlns="http://www.w3.org/1999/xhtml"><head>< ...
- webdynpro 下拉列表控件
现在界面上添加下拉列表的控件DropDownByKey 在context中创建新的node,和属性DP 返回界面,绑定DP到控件DropDownByKey的SelectedKey 初始方法中代码如下: ...
- 3篇OAuth的文章
http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html http://blog.unvs.cn/archives/oauth-qq1.0-devel ...
- [WP8] Binding时,依照DataType来选择DataTemplate
原文 [WP8] Binding时,依照DataType来选择DataTemplate 范例下载 范例程序代码:点此下载 问题情景 在开发WPF.WP8...这类应用程序的时候,透过Binding机制 ...