题目连接

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)相关推荐

  1. 【算法学习】字符串哈希(Hash)

    什么是字符串Hash 构造字符串Hash 1)自然溢出方法 2)单Hash方法 3)双Hash方法 4)三种不同的构造方法的对比 获取子串的Hash O(1) 1)例子 2)公式 具体的题目例子 1) ...

  2. P3370-[模板]字符串哈希【hash】

    正题 评测记录:https://www.luogu.org/recordnew/lists?uid=52918&pid=P3370 大意 输出若干个字符串,求输入的字符串的总个数. 解题思路 ...

  3. AcWing 841. 字符串哈希

    题目描述 分析: 字符串 hash 小试牛刀 我们在之前模拟散列时,设置的哈希函数为将一个元素(element, e)输入哈希函数中,输出是一个整数,而那时的 e e e 为一个有范围的整数.现在我们 ...

  4. ~~字符串哈希(数据结构)(附模板题AcWing 841 字符串哈希)

    核心思想: 将字符串看成P进制数,P的经验值是131或13331,取这两个值的冲突概率低. 小技巧: 取模的数用2^64,这样直接用unsigned long long存储,溢出的结果就是取模的结果. ...

  5. Hash(哈希(字符串哈希))模板和做题总结(详细易懂)

    文章目录 目录 文章目录 前言: 一 Hash表 1 Hash函数的构造 2 拉链法处理hash冲突模板 3 开放寻址法处理hash冲突 4(例题).雪花雪花 二   字符串Hash O(n)+O(m ...

  6. 字符串处理之---字符串哈希

    前言 字符串哈希,非常非常好用NB的方法,虽然有一定概率会翻车(翻车概率极低),但是这个是真的NB,你如果会这个在大多数场合可以避免掉有一些算法的学习,比如马拉车算法, 你学马拉车只能处理回文字符串, ...

  7. 字符串哈希算法简单入门学习

    字符串哈希算法 字符串哈希,最著名的就是BKDRHash,也就是将字符串变成数值,并且最后变成的数值是一个P进制的数(一班取131或者13331),一般来说P最好为素数.然后我们之所以需要前缀和,是因 ...

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

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

  9. 相同的字符串哈希值一样吗_关于哈希,来看这里!

    我想跟着大家一起重新学习下关于哈希的一切--哈希.哈希函数.哈希表. 这三者有什么样的爱恨情仇? 为什么Object类中需要有一个hashCode()方法?它跟equals()方法有什么关系? 如何编 ...

  10. Android程序获得APP哈希值,Android – SMS Retriever API – 计算应用程序的哈希字符串问题...

    我是Android的新手,我正在尝试实现SMS Retriever API,以便在我的应用中使用OTP. 不幸的是,我陷入了"计算你的应用程序的哈希字符串"的部分 我在这里引用了指 ...

最新文章

  1. Jquery实现的Tabs页签
  2. as常用固定搭配_英语考试干货!205个常用介词固定搭配
  3. lambda 匿名内部类_Lambda运行时内部:窥视无服务器巢穴
  4. 电脑w ndows无法自动修复,windows 10自动修复无法修复你的电脑
  5. 流程图怎么切换_PPT中「较长的流程图」该如何清晰展现?
  6. word里面用mathtype编辑公式转成PDF后出现乱码
  7. nlp基础—9.条件随机场模型(CRF算法)
  8. 【论文笔记】基于2-channel network的图片相似度判别-CVPR 2015
  9. Sql根据身份证计算年龄和时间范围的条件查询
  10. java解析本地wsdl_关于解析本地wsdl文件
  11. flask sqlalchemy按照创建时间逆向排序
  12. POJ 3580 SuperMemo
  13. ECCV2018论文RBNet:Receptive Field Block Net for Accurate and FastObject Detection
  14. 树莓派 zero 通过 max31865 连接 PT100 热电阻 测量温度
  15. 单文件、多文件上传 - Tomcat
  16. 2022年蓝桥杯:第十三届蓝桥杯大赛软件赛省赛C/C++大学B组真题(考后回顾,文末附真题链接)
  17. 大话数据结构系列之链队列结构(十二)
  18. FasterRCNN目标检测算法
  19. ai模型去除图像衍射光斑_生命的智慧:奥林巴斯率先开启显微镜的AI人工智能时代...
  20. Android 无线接口层RIL

热门文章

  1. python numpy中bool变量转为1或0
  2. 吴恩达深度学习笔记 3.1~3.11 浅层神经网络
  3. .Net之美读书笔记15
  4. lucky的时光助理-2017.02
  5. android.content.res.Resources$NotFoundException: String resource ID #0x0
  6. PHP+MYSQL 出现乱码的解决方法
  7. 内存之私有sql区和共享sql区
  8. NGINX api网关(mark 有空填坑)
  9. “Get that job at Google”笔记
  10. 2017云计算与IT风向标-------- 移动、转型、整合