题目传送门

【题目大意】

给定一个字符串$S$,有$m$次询问,每次询问给出四个整数$l1,r1,l2,r2$,判断$S[l1~r1]$是否与$S[l2~r2]$相同。

【思路分析】

$Hash$板子题

$hsh[i]$表示从$S[1]$到$S[i]$的字符串的$Hash$值,然后要求$S[l~r]$的$Hash$值则$hsh[r]-hsh[l-1]*base^{r-l+1}$,要注意一点就是如果用了$unsigned\ long\ long$就不要再加膜运算了。

【代码实现】

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cstring>
 4 #include<algorithm>
 5 #include<cmath>
 6 #include<queue>
 7 #define g() getchar()
 8 #define rg register
 9 #define go(i,a,b) for(rg int i=a;i<=b;i++)
10 #define back(i,a,b) for(rg int i=a;i>=b;i--)
11 #define db double
12 #define ll long long
13 #define il inline
14 #define pf printf
15 #define sf scanf
16 #define mem(a,b) memset(a,b,sizeof(a))
17 using namespace std;
18 int fr(){
19     int w=0,q=1;
20     char ch=g();
21     while(ch<'0'||ch>'9'){
22         if(ch=='-') q=-1;
23         ch=g();
24     }
25     while(ch>='0'&&ch<='9') w=(w<<1)+(w<<3)+ch-'0',ch=g();
26     return w*q;
27 }
28 const int N=1000002;
29 const int base=131;
30 const ll mod=20190826270251;
31 int n,m,a[N];
32 char s[N];
33 unsigned ll hsh[N],f[N];
34 int main(){
35     //freopen("","r",stdin);
36     //freopen("","w",stdout);
37     sf("%s",s+1);n=strlen(s+1);
38     f[0]=1;go(i,1,n) f[i]=f[i-1]*base,a[i]=s[i]-'a';//预处理
39     go(i,1,n) hsh[i]=hsh[i-1]*base+a[i];
40     m=fr();
41     while(m--){
42         rg int l1=fr(),r1=fr(),l2=fr(),r2=fr();
43         unsigned ll as1=hsh[r1]-hsh[l1-1]*f[r1-l1+1];
44         unsigned ll as2=hsh[r2]-hsh[l2-1]*f[r2-l2+1];
45         if(as1==as2) puts("Yes");
46         else puts("No");
47     }
48     return 0;
49 }

代码戳这里

转载于:https://www.cnblogs.com/THWZF/p/11602140.html

CH138 兔子和兔子 题解报告相关推荐

  1. 兔子与兔子 [Hash]

    兔子与兔子 描述 很久很久以前,森林里住着一群兔子.有一天,兔子们想要研究自己的 DNA 序列.我们首先选取一个好长好长的 DNA 序列(小兔子是外星生物,DNA 序列可能包含 26 个小写英文字母) ...

  2. 2015浙江财经大学ACM有奖周赛(一) 题解报告

    2015浙江财经大学ACM有奖周赛(一) 题解报告 命题:丽丽&&黑鸡 这是命题者原话. 题目涉及的知识面比较广泛,有深度优先搜索.广度优先搜索.数学题.几何题.贪心算法.枚举.二进制 ...

  3. [RabbitMQ+Python入门经典] 兔子和兔子窝

    RabbitMQ作为一个工业级的消息队列服务器,在其客户端手册列表的Python段当中推荐了一篇blog,作为RabbitMQ+Python的入门手册再合适不过了.不过,正如其标题Rabbit and ...

  4. php狼和兔子算法,PHP基于递归算法解决兔子生兔子问题php技巧

    这篇文章主要介绍了PHP基于递归算法解决兔子生兔子问题,结合实例形式分析了兔子生兔子问题的php面试题采用循环与递归两种思路的解决方法,需要的朋友可以参考下 本文实例讲述了PHP基于递归算法解决兔子生 ...

  5. python兔子_python 实现兔子生兔子示例

    如下所示: # -*- coding: utf-8 -*- # 简述:话说有一对可爱的兔子,出生后的第三个月开始,每一月都会生一对小兔子. # 当小兔子长到第三个月后,也会每个月再生一对小小兔子. # ...

  6. 一只兔子每三个月生兔子JAVA,兔子生兔子问题

    关于兔子生兔子的算法详解 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔 子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 分析: 第1个月  --  1对 第2 ...

  7. 兔子问题 php,PHP基于递归算法解决兔子生兔子问题php技巧

    这篇文章主要介绍了PHP基于递归算法解决兔子生兔子问题,结合实例形式分析了兔子生兔子问题的php面试题采用循环与递归两种思路的解决方法,需要的朋友可以参考下 本文实例讲述了PHP基于递归算法解决兔子生 ...

  8. python兔子编程_Python兔子生兔子算法,编程练习题实例十一

    Python兔子生兔子算法,编程练习题实例十一 Python兔子生兔子算法,编程练习题实例十一 没学习python之前就听说过一个兔子生兔子的数学算法问题.现在学习了python编程后,自然要用pyt ...

  9. java 兔子生兔子

    标题 兔子生兔子 问题描述 假设一对兔子的成熟期是一个月,即一个月可长成成兔,那么,如果每对成兔每个月都生一对小兔,一对新生的小兔从第二个月起就开始生兔子,试问从一对兔子开始繁殖,以后每个月会有多少对 ...

  10. python生兔子问题(递归算法)_python 实现兔子生兔子示例

    python 实现兔子生兔子示例 如下所示: # -*- coding: utf-8 -*- # 简述:话说有一对可爱的兔子,出生后的第三个月开始,每一月都会生一对小兔子. # 当小兔子长到第三个月后 ...

最新文章

  1. Go 学习笔记(77)— Go 第三方库之 cronexpr(解析 crontab 表达式,定时任务)
  2. Linux使用Shell脚本实现ftp的自动上传下载
  3. 小学计算机课型有哪几种,小学信息技术课上常用几种教学方法.doc
  4. 算法--------最大正方形(Java版本)
  5. 读书笔记12:观察者模式
  6. ustc小道消息20220120
  7. 面试金典--11.5
  8. Spring Cloud 微服务架构
  9. 帮助别人是一种快乐!
  10. JQuery动画之淡入淡出动画
  11. [WCF Step by Step 读书笔记] Chapter01 WCF 介绍
  12. 接口数组 java_java 数组和集合
  13. JAVA中inputstring_java IO流 之 字节输入流 InputString()
  14. Centos7搭建LAMP+Typecho博客
  15. php引用符号详解——————给变量起小名
  16. 华大单片机HC32L130/HC32L136红外端口配置
  17. 电子邮箱万一被盗该怎么办?
  18. 微软CRM锁定9大垂直产业
  19. jira与Jenkins集成
  20. 傅里叶光学(二)一维光栅与二维光栅的夫琅禾费衍射

热门文章

  1. iOS开发——加载、滑动翻阅大量图片解决方案详解
  2. go juju/ratelimit 简单使用
  3. Canonical Juju 使用笔记
  4. go juju/ratelimit 简单使用示例
  5. 《神经科学:探索脑》学习笔记(第12章 躯体感觉系统)
  6. 教育教学直播截图(未完待续)
  7. LeetCode1079题:活字印刷——Python递归与迭代解法
  8. Java学习笔记之五:Nexus配置为强制从maven私服下载
  9. rpc服务器不可用桌面图标消失,rpc服务器不可用,教您rpc服务器不可用怎么办
  10. win8信息服务器不可用怎么办,win8系统rpc服务器不可用怎么办?提示rpc服务器不可用处理方法介绍...