AcWing 841. 字符串哈希(字符串Hash)
题目连接
https://www.acwing.com/problem/content/843/
思路
我们用一个数组a记录改字符串的前缀hash值,然后和前缀和类似的方法,不过注意的是,我们在计算区间hash值的时候需要对位数较低的数进行移位操作,也就是给a[l-1]乘上一个pr−l+1p^{r-l+1}pr−l+1,然后再和a[r]做运算
代码
#include<bits/stdc++.h>
using namespace std;
//----------------自定义部分----------------
#define ll long long
#define ull unsigned long long
#define mod 1000000007
#define endl "\n"
#define PII pair<int,int>int dx[4]={0,-1,0,1},dy[4]={-1,0,1,0};ll ksm(ll a,ll b) {ll ans = 1;for(;b;b>>=1LL) {if(b & 1) ans = ans * a % mod;a = a * a % mod;}return ans;
}ll lowbit(ll x){return -x & x;}const int N = 2e6+10,P = 1331;
//----------------自定义部分----------------
ull n,m,q,a[N],p[N];ull get(int l,int r){return a[r] - a[l-1] * p[r-l+1];
}int main()
{std::ios::sync_with_stdio(false);std::cin.tie(nullptr);std::cout.tie(nullptr);string s;cin>>n>>m;cin>>s;p[0] = 1;for(int i = 1;i <= n; ++i) {a[i] = a[i-1] * P + s[i-1];p[i] = p[i-1] * P;}int l1,r1,l2,r2;while(m--) {cin>>l1>>r1>>l2>>r2;if(get(l1,r1) == get(l2,r2)) cout<<"Yes"<<endl;else cout<<"No"<<endl;}return 0;
}
AcWing 841. 字符串哈希(字符串Hash)相关推荐
- 【算法学习】字符串哈希(Hash)
什么是字符串Hash 构造字符串Hash 1)自然溢出方法 2)单Hash方法 3)双Hash方法 4)三种不同的构造方法的对比 获取子串的Hash O(1) 1)例子 2)公式 具体的题目例子 1) ...
- P3370-[模板]字符串哈希【hash】
正题 评测记录:https://www.luogu.org/recordnew/lists?uid=52918&pid=P3370 大意 输出若干个字符串,求输入的字符串的总个数. 解题思路 ...
- AcWing 841. 字符串哈希
题目描述 分析: 字符串 hash 小试牛刀 我们在之前模拟散列时,设置的哈希函数为将一个元素(element, e)输入哈希函数中,输出是一个整数,而那时的 e e e 为一个有范围的整数.现在我们 ...
- ~~字符串哈希(数据结构)(附模板题AcWing 841 字符串哈希)
核心思想: 将字符串看成P进制数,P的经验值是131或13331,取这两个值的冲突概率低. 小技巧: 取模的数用2^64,这样直接用unsigned long long存储,溢出的结果就是取模的结果. ...
- Hash(哈希(字符串哈希))模板和做题总结(详细易懂)
文章目录 目录 文章目录 前言: 一 Hash表 1 Hash函数的构造 2 拉链法处理hash冲突模板 3 开放寻址法处理hash冲突 4(例题).雪花雪花 二 字符串Hash O(n)+O(m ...
- 字符串处理之---字符串哈希
前言 字符串哈希,非常非常好用NB的方法,虽然有一定概率会翻车(翻车概率极低),但是这个是真的NB,你如果会这个在大多数场合可以避免掉有一些算法的学习,比如马拉车算法, 你学马拉车只能处理回文字符串, ...
- 字符串哈希算法简单入门学习
字符串哈希算法 字符串哈希,最著名的就是BKDRHash,也就是将字符串变成数值,并且最后变成的数值是一个P进制的数(一班取131或者13331),一般来说P最好为素数.然后我们之所以需要前缀和,是因 ...
- ELFhash - 优秀的字符串哈希算法
原 ELFhash - 优秀的字符串哈希算法 分类:算法杂论算法精讲数据结构 (1424) (2) 1.字符串哈希: 我们先从字符串哈希说起 在很多的情况下,我们有可能会获得大量的字符串,每个字符串 ...
- 相同的字符串哈希值一样吗_关于哈希,来看这里!
我想跟着大家一起重新学习下关于哈希的一切--哈希.哈希函数.哈希表. 这三者有什么样的爱恨情仇? 为什么Object类中需要有一个hashCode()方法?它跟equals()方法有什么关系? 如何编 ...
- Android程序获得APP哈希值,Android – SMS Retriever API – 计算应用程序的哈希字符串问题...
我是Android的新手,我正在尝试实现SMS Retriever API,以便在我的应用中使用OTP. 不幸的是,我陷入了"计算你的应用程序的哈希字符串"的部分 我在这里引用了指 ...
最新文章
- Jquery实现的Tabs页签
- as常用固定搭配_英语考试干货!205个常用介词固定搭配
- lambda 匿名内部类_Lambda运行时内部:窥视无服务器巢穴
- 电脑w ndows无法自动修复,windows 10自动修复无法修复你的电脑
- 流程图怎么切换_PPT中「较长的流程图」该如何清晰展现?
- word里面用mathtype编辑公式转成PDF后出现乱码
- nlp基础—9.条件随机场模型(CRF算法)
- 【论文笔记】基于2-channel network的图片相似度判别-CVPR 2015
- Sql根据身份证计算年龄和时间范围的条件查询
- java解析本地wsdl_关于解析本地wsdl文件
- flask sqlalchemy按照创建时间逆向排序
- POJ 3580	SuperMemo
- ECCV2018论文RBNet:Receptive Field Block Net for Accurate and FastObject Detection
- 树莓派 zero 通过 max31865 连接 PT100 热电阻 测量温度
- 单文件、多文件上传 - Tomcat
- 2022年蓝桥杯:第十三届蓝桥杯大赛软件赛省赛C/C++大学B组真题(考后回顾,文末附真题链接)
- 大话数据结构系列之链队列结构(十二)
- FasterRCNN目标检测算法
- ai模型去除图像衍射光斑_生命的智慧:奥林巴斯率先开启显微镜的AI人工智能时代...
- Android 无线接口层RIL
热门文章
- python numpy中bool变量转为1或0
- 吴恩达深度学习笔记 3.1~3.11 浅层神经网络
- .Net之美读书笔记15
- lucky的时光助理-2017.02
- android.content.res.Resources$NotFoundException: String resource ID #0x0
- PHP+MYSQL 出现乱码的解决方法
- 内存之私有sql区和共享sql区
- NGINX api网关(mark 有空填坑)
- “Get that job at Google”笔记
- 2017云计算与IT风向标-------- 移动、转型、整合