题干:

输入n个字符串,然后进行m次询问,每次询问输入一个字符串,问n个字符串中是否存在与当前输入的字符串长度相等,并且刚好有且仅有一个位置的字符不同。存在则输出YES,不存在输出NO。

Examples

Input

2 3
aaaaa
acacaca
aabaa
ccacacc
caaac

Output

YES
NO
NO

解题报告:

刚开始读错题了,还以为需要对于每一个询问,看n个模板串的子串是否有满足要求的解。但是题目中还要求两个串的长度需要相同,这样就简单多了,直接对于每个模板串,存下Hash值,直接放入set,对于每个询问,暴力修改位置,然后在set中查询就行了,刚开始单模数WA17了,脸黑、、改双模数就过了。(其实双模数用pair是最好的,因为这样有坑出现:两个Hash分别冲突了不同的值,也就是还是又概率出现冲突的,但是直接set<pair<ull,ull> >就几乎完全不会有问题)(wjhnb)

AC代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<stack>
#include<map>
#include<vector>
#include<set>
#include<string>
#include<cmath>
#include<cstring>
#define FF first
#define SS second
#define ll long long
#define pb push_back
#define pm make_pair
using namespace std;
typedef pair<int,int> PII;
typedef unsigned ll ull;
const int MAX = 6e5 + 5;
const ll mod = 2000004199,mod2 = 1111111111111;
const ll seed = 131,seed2 = 13331;
int n,m;
char s[MAX];
ull P[MAX],P2[MAX];
set<ull> ss,ss2;
int main()
{P[0]=P2[0]=1;for(int i = 1; i<MAX; i++) P[i] = P[i-1] * seed % mod,P2[i] = P2[i-1] * seed2 % mod2;cin>>n>>m;for(int i = 1; i<=n; i++) {scanf("%s",s+1);ull Hash = 0,Hash2 = 0;int len = strlen(s+1);for(int j = 1; j<=len; j++) Hash = (Hash*seed + s[j]-'a'+1)%mod,Hash2 = (Hash2*seed2+s[j]-'a'+1)%mod2;ss.insert(Hash);ss2.insert(Hash2);}for(int i = 1; i<=m; i++) {scanf("%s",s+1);ull Hash=0,Hash2 = 0;int len = strlen(s+1),flag = 0;for(int j = 1; j<=len; j++) Hash = (Hash*seed + s[j]-'a'+1)%mod,Hash2 = (Hash2*seed2+s[j]-'a'+1)%mod2;for(char ch = 'a'; ch<='c'; ch++) {for(int j = 1; j<=len; j++) {if(s[j] == ch) continue;if(ss.count((Hash+10*mod + (ch - s[j]) * P[len-j])%mod) && ss2.count((Hash2+10*mod2+(ch-s[j])*P2[len-j])%mod2)) {flag = 1;break;   }}}if(flag == 1) puts("YES");else puts("NO");}return 0 ;
}

【CodeForces - 514C】Watto and Mechanism(字符串哈希)相关推荐

  1. 【CodeForces】961 F. k-substrings 字符串哈希+二分

    [题目]F. k-substrings [题意]给定长度为n的串S,对于S的每个k-子串$s_ks_{k+1}...s_{n-k+1},k\in[1,\left \lceil \frac{n}{2} ...

  2. CodeForces 514B - Watto and Mechanism

    这题看网上题解,都是相除然后什么暴力的,感觉没有必要.实际上就是计算每个点相当于炮塔的斜率,考虑到斜率是浮点数,因此可以把分数约分,然后比较有多少个这样不同的最简分数即可.刚开始用数组开的比较大内存超 ...

  3. hash+set Codeforces Round #291 (Div. 2) C. Watto and Mechanism

    题目传送门 1 /* 2 hash+set:首先把各个字符串的哈希值保存在set容器里,然后对于查询的每一个字符串的每一位进行枚举 3 用set的find函数查找是否存在替换后的字符串,理解后并不难. ...

  4. ELFhash - 优秀的字符串哈希算法

    原 ELFhash - 优秀的字符串哈希算法 分类:算法杂论算法精讲数据结构 (1424)  (2) 1.字符串哈希: 我们先从字符串哈希说起 在很多的情况下,我们有可能会获得大量的字符串,每个字符串 ...

  5. 138. 兔子与兔子【字符串哈希】

    很基础的字符串哈希 #include<bits/stdc++.h> using namespace std; typedef unsigned long long int ull; con ...

  6. Singing Superstar 字符串哈希-map操作

    题意 : 给一长度 < 1e5 的字符串s,q < 1e5次询问,每次问一个长 < 30 的串 t 在s中出现的次数,且t不可重叠. 例 : "abababa"中 ...

  7. 中石油训练赛 - DNA(字符串哈希)

    题目链接:点击查看 题目大意:给出一串只由A,C,G,T组成的字符串,再给出一个数字k,问每个长度为k的连续子串,出现的次数最多是多少次 题目分析:O(n)哈希一下,O(n)更新一下用无序map维护的 ...

  8. HDU - 3613 Best Reward(字符串哈希)

    题目链接:点击查看 题目大意:给出一个字符串,每个字母都有一个贡献值,现在要将这个字符串拆成两个子串,如果子串是回文串的话,贡献就是其中每个字母的贡献和,现在问贡献最大为多少 题目分析:很简单的一道回 ...

  9. 怎么把字符串变成数组_字符串哈希:从零开始的十分钟包会教程

    大家吼啊!这是我下定决心写专栏以来的第二篇文章,请大家多多资瓷!!同样我们先以上次的话起头吧! 恭喜你找到了这篇博客!虽然这个标题看起来非常像是nc营销号的标题但是!请相信我一次这是真的!如果不行请随 ...

  10. [Leetcode][程序员面试金典][面试题17.13][JAVA][恢复空格][动态规划][Trie][字符串哈希]

    [问题描述][中等] [解答思路] 1. 动态规划 动态规划流程 第 1 步:设计状态 dp[i] 表示字符串的前 i 个字符的最少未匹配数. 第 2 步:状态转移方程 假设当前我们已经考虑完了前 i ...

最新文章

  1. Vuex2.0+Vue2.0构建备忘录应用实践
  2. 4G室内直放站_室内信号不太好,安装一个手机信号放大器,有效果吗?
  3. 【GRE协议】CentOS配置GRE隧道
  4. qt 3d迷宫游戏_《加雷利亚的地下迷宫与魔女的旅团》最新情报公布
  5. 挖一挖C#中那些我们不常用的东西之系列(2)——IsXXX 系列方法
  6. Linux Linux内核参数调优
  7. 简述html文档的基本,网页制作简答题答案
  8. python宿舍管理系统_python实现宿舍管理系统
  9. 中子射线照相检测技术
  10. 让数据分析更easy的选择—贪心科技AI商业数据分析课程深度测评
  11. 页面置换算法用java实现_java实现页面置换算法
  12. 2022腾讯云学生服务器申请流程(全攻略)
  13. 用Ventoy同时引导ubuntu/centos/windows多系统安装
  14. OCR-easyocr初识
  15. 一些网络广告定价模式的含义
  16. 网络服务器配置管理综合实训项目心得体会,服务器的配置与管理实训报告.doc...
  17. shader三种变量类型(uniform,attribute和varying)
  18. 通过 JFR 与日志深入探索 JVM - 调试 JVM 的工具 WhiteBox API
  19. 测试主管面试必问合集:get 与 post 的区别
  20. Heartbeat+DRBD+MySQL高可用方案

热门文章

  1. 【Breadth-first Search 】785. Is Graph Bipartite?
  2. [Leedcode][JAVA][第300题][最长上上子序列][动态规划][压缩空间]
  3. [Leedcode][JAVA][第55题][跳跃游戏][贪心][动态规划]
  4. java 私有变量访问_Java - 访问私有实例变量
  5. 系统mysql数据库服务器,系统mysql数据库服务器
  6. 计算机专业论文范文精选,计算机毕业论文提纲范文精选
  7. python可以开多少线程_python多线程详解
  8. windows 7搭建流媒体服务
  9. java删除集合元素吗_java如何删除集合中的元素
  10. Wince6 Eboot中加入开机画面