[codeforces]514C
来源:互联网 发布:初级linux运维面试题 编辑:程序博客网 时间:2024/04/28 21:57
C. Watto and Mechanism
time limit per test:3 seconds
memory limit per test:256 megabytes
Watto, the owner of a spare parts store, has recently got an order for the mechanism that can process strings in a certain way. Initially the memory of the mechanism is filled with n strings. Then the mechanism should be able to process queries of the following type: “Given string s, determine if the memory of the mechanism contains string t that consists of the same number of characters as s and differs from s in exactly one position”.
Watto has already compiled the mechanism, all that’s left is to write a program for it and check it on the data consisting of n initial lines and m queries. He decided to entrust this job to you.
Input
The first line contains two non-negative numbers n and m
Next follow n non-empty strings that are uploaded to the memory of the mechanism.
Next follow m non-empty strings that are the queries to the mechanism.
The total length of lines in the input doesn’t exceed
Output
For each query print on a single line “YES” (without the quotes), if the memory of the mechanism contains the required string, otherwise print “NO” (without the quotes).
Input
2 3aaaaaacacacaaabaaccacacccaaac
Output
YESNONO
题意:
先给你有n个字符串的词典,然后有m个询问,每次询问一个字符串B,看看词典中是否存在一个字符串A,使得这个字符串B跟字符串A等长并且有且只有一个位置上的字母不相同,存在则输出YES,不存在则输出NO。(输入的总字符数量不超过60W个)
题解:
字符串哈希,枚举有差异的位置,用set判断hash值的存在性,取MOD需要深思熟虑(假装深思熟虑,然后瞎取了一个跑得飞快hhhhhhhh,生日还是好用!!!)
#include<bits/stdc++.h>#define LiangJiaJun main#define MOD 19991227007ll#define ll long longusing namespace std;int n,m;char s[600004];set<ll>mert;int LiangJiaJun (){ scanf("%d%d",&n,&m); for(int i=1;i<=n;i++){ int l;ll HASH=0; scanf("%s",s+1); l=strlen(s+1); for(int j=1;j<=l;j++)HASH=(HASH*3+s[j]-'a')%MOD; mert.insert(HASH); } for(int i=1;i<=m;i++){ int l; ll p=1,HASH=0,now; bool GT=0; scanf("%s",s+1); l=strlen(s+1); for(int j=1;j<=l;j++)HASH=(HASH*3+s[j]-'a')%MOD; GT=0; for(int j=l;j>=1;j--){ for(int k=0;k<3;k++){ if(k+'a' == s[j])continue; now=( HASH - ((s[j]-'a')*p)%MOD + (k*p)%MOD + MOD)%MOD; if(mert.count(now)){ puts("YES"); GT=1;break; } } if(GT)break; p=(p*3)%MOD; } if(!GT)puts("NO"); } return 0;}
- [codeforces]514C
- codeforces 514c Watto and Mechanism (hash)
- Codeforces 514C . Watto and Mechanism
- Codeforces 514C Watto And Mechanism 哈希
- Codeforces-340-C(c++)
- Codeforces-507-C(c++)
- CodeForces 731C C
- CodeForces-612C C
- CODEFORCES 265C CODEFORCES, 265C
- codeforces #78 div2 C
- Codeforces 117C Cycle
- CodeForces 209C
- CodeForces 156C Cipher
- codeforces 148 div2 C
- codeforces 242C
- Codeforces-234C Weather
- codeforces 106C Buns
- codeforces 158C
- 42. Trapping Rain Water
- new Object()中传入参数的用法
- 学习资料集
- java分布式系统部署学习(四)ansible配置ansible.cfg
- Java语言规范基于JavaSE9 第七章 包和模块(二)
- [codeforces]514C
- 网络的基本知识
- 单层神经网络、多层感知机、深度学习的总结
- 使用Eclipse构建Maven的SpringMVC项目
- STM32F103 Slave I2C配置
- HDU 3065-病毒侵袭持续中
- 汉诺塔问题解答
- Fedora 27/26/25 NVIDIA 驱动安装
- 自学Python之Python基础:(四)Python多线程