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

题干:

输入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 ;
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/439649.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

并发编程(原子性、可见性、一致性)

1、原子性&#xff08;Atomicity&#xff09; 原子性是指在一个操作中就是cpu不可以在中途暂停然后再调度&#xff0c;既不被中断操作&#xff0c;要不执行完成&#xff0c;要不就不执行。 如果一个操作时原子性的&#xff0c;那么多线程并发的情况下&#xff0c;就不会出现变…

Coursera自动驾驶课程第10讲:Feedforward Neural Networks

在上一讲《Coursera自动驾驶课程第9讲&#xff1a;Visual Features Detection Description and Matching》中我们学习了如何进行图像特征检测&#xff0c;特征匹配以及如何构建视觉里程计来估计相机的运动。 本讲我们将学习神经网络模块&#xff0c;关于神经网络或深度学习网上…

【CodeForces - 514D】R2D2 and Droid Army(二分+滑动窗口ST表,或 尺取+单调队列或STLmultiset)

题干&#xff1a; An army of n droids is lined up in one row. Each droid is described by m integers a1, a2, ..., am, where ai is the number of details of the i-th type in this droids mechanism. R2-D2 wants to destroy the sequence of consecutive droids o…

守护进程和守护线程

对于JAVA而言&#xff0c;一般一个应用程序只有一个进程——JVM。除非在代码里面另外派生或者开启了新进程。 而线程&#xff0c;当然是由进程开启的。当开启该线程的进程离开时&#xff0c;线程也就不复存在了。 所以&#xff0c;对于JAVA而言&#xff0c;线程是完全可以由自…

Coursera自动驾驶课程第11讲:2D Object Detection

在上一讲《Coursera自动驾驶课程第10讲&#xff1a;Feedforward Neural Networks》中我们学习了神经网络的基础知识&#xff0c;包括损失函数&#xff0c;梯度下降&#xff0c;正则化&#xff0c;卷积网络等。 本讲我们将学习深度学习的一个重要应用&#xff1a;图像目标检测。…

【CodeForces - 460C】Present(二分+树状数组)

题干&#xff1a; 给定N朵花的原先的高度&#xff0c;从左到右排列&#xff0c;最多浇水m天&#xff0c;每天只能浇一次&#xff0c;每次使得连续的w朵花的高度增长1&#xff0c;问最后最矮的花的高度最高是多少。 Examples Input 6 2 3 2 2 2 2 1 1Output 2Input 2 5 1 …

多线程知识梳理(1) - 并发编程的艺术笔记

第三章 Java内存模型 3.1 Java内存模型的基础 通信 在共享内存的模型里&#xff0c;通过写-读内存中的公共状态进行隐式通信&#xff1b;在消息传递的并发模型里&#xff0c;线程之间必须通过发送消息来进行显示的通信。同步 在共享内存并发模型里&#xff0c;同步是显示进行…

Coursera自动驾驶课程第12讲:Semantic Segmentation

在上一讲《Coursera自动驾驶课程第11讲&#xff1a;2D Object Detection》我们学习了深度学习的一个重要应用&#xff1a;目标检测。 本讲我们将学习深度学习的另一个重要应用&#xff1a;语义分割。这是图片像素级的一个重要应用。 B站视频链接&#xff1a;https://www.bili…

【CodeForces - 697D】Puzzles(树形dp,期望dp)

题目大意&#xff1a; 给定一棵树&#xff0c;从1开始&#xff0c;按DFS的方式访问这棵树 每次从父亲节点随机访问儿子&#xff0c;问每个节点被访问到的时间的期望 输入&#xff1a;第一行一个数n&#xff0c;代表n个节点。第二行n-1个数p2,p3,p4,p5...,pn-1&#xff0c;其…

多线程知识梳理(2) - 并发编程的艺术笔记

layout: post title: 《Java并发编程的艺术》笔记 categories: Java excerpt: The Art of Java Concurrency Programming. <img src"http://upload-images.jianshu.io/upload_images/658453-a94405da52987372.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240…

Coursera自动驾驶课程第13讲:Least Squares

在上一讲《Coursera自动驾驶课程第12讲&#xff1a;Semantic Segmentation》我们学习了深度学习的另一个重要应用&#xff1a;语义分割。至此&#xff0c;本课程的视觉感知模块就介绍完了。 从本讲开始&#xff0c;我们将学习一个新的模块&#xff0c;也是本课程的第三个模块&…

【POJ - 3211】Washing Clothes (dp,0-1背包中点问题)

题干&#xff1a; Dearboy was so busy recently that now he has piles of clothes to wash. Luckily, he has a beautiful and hard-working girlfriend to help him. The clothes are in varieties of colors but each piece of them can be seen as of only one color. In…

java多线程同步synchronized——对象监视器

1、synchronized关键字的作用域有二种&#xff1a; 1&#xff09;是某个对象实例内&#xff0c;synchronized aMethod(){}可以防止多个线程同时访问这个对象的synchronized方法&#xff08;如果一个对象有多个synchronized方法&#xff0c;只要一个线程访问了其中的一个synchro…

Coursera自动驾驶课程第14讲:Linear and Nonlinear Kalman Filters

在上一讲《Coursera自动驾驶课程第13讲&#xff1a;Least Squares》我们学习了最小二乘法相关知识。 本讲我们将学习20世纪最著名的一个算法&#xff1a;卡尔曼滤波。具体包括线性卡尔曼滤波&#xff08;KF&#xff09;&#xff0c;扩展卡尔曼滤波(EKF)&#xff0c;误差状态卡…

☆【UVA - 624 】CD(dp + 0-1背包 + 记录路径)

题干&#xff1a; You have a long drive by car ahead. You have a tape recorder, but unfortunately your best music is on CDs. You need to have it on tapes so the problem to solve is: you have a tape N minutes long. How to choose tracks from CD to get most o…

详解两阶段3D目标检测网络 Voxel R-CNN:Towards High Performance Voxel-based 3D Object Detection

本文介绍一篇两阶段的3D目标检测网络&#xff1a;Voxel R-CNN&#xff0c;论文已收录于AAAI 2021。 这里重点是理解本文提出的 Voxel RoI pooling。 论文链接为&#xff1a;https://arxiv.org/pdf/2012.15712.pdf 项目链接为&#xff1a;https://github.com/djiajunustc/Voxe…

java容器类1:Collection,List,ArrayList,LinkedList深入解读

1、 Iterable 与 Iterator Iterable 是个接口&#xff0c;实现此接口使集合对象可以通过迭代器遍历自身元素. public interface Iterable<T> 修饰符和返回值方法名描述Iterator<T>iterator()返回一个内部元素为T类型的迭代器default voidforEach(Consumer<?…

【POJ - 1050】To the Max (dp)

题干&#xff1a; Given a two-dimensional array of positive and negative integers, a sub-rectangle is any contiguous sub-array of size 1*1 or greater located within the whole array. The sum of a rectangle is the sum of all the elements in that rectangle. I…

无限场景开放式仿真器 PGDrive:Improving the Generalization of End-to-End Driving through Procedural Generation

本文介绍一个拥有无限场景开放式驾驶仿真器&#xff1a;PGDrive&#xff0c;通过 Procedural Generation 技术可以生成无限多的驾驶场景&#xff0c;由香港中文大学周博磊团队开发。 论文地址&#xff1a;https://arxiv.org/pdf/2012.13681.pdf 项目地址&#xff1a;https://…

java容器类2:Map及HashMap深入解读

Java的编程过程中经常会和Map打交道&#xff0c;现在我们来一起了解一下Map的底层实现&#xff0c;其中的思想结构对我们平时接口设计和编程也有一定借鉴作用。(以下接口分析都是以jdk1.8源码为参考依据) 1. Map An object that maps keys to values. A map cannot contain du…