CH138 兔子和兔子 题解报告
题目传送门
【题目大意】
给定一个字符串$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 兔子和兔子 题解报告相关推荐
- 兔子与兔子 [Hash]
兔子与兔子 描述 很久很久以前,森林里住着一群兔子.有一天,兔子们想要研究自己的 DNA 序列.我们首先选取一个好长好长的 DNA 序列(小兔子是外星生物,DNA 序列可能包含 26 个小写英文字母) ...
- 2015浙江财经大学ACM有奖周赛(一) 题解报告
2015浙江财经大学ACM有奖周赛(一) 题解报告 命题:丽丽&&黑鸡 这是命题者原话. 题目涉及的知识面比较广泛,有深度优先搜索.广度优先搜索.数学题.几何题.贪心算法.枚举.二进制 ...
- [RabbitMQ+Python入门经典] 兔子和兔子窝
RabbitMQ作为一个工业级的消息队列服务器,在其客户端手册列表的Python段当中推荐了一篇blog,作为RabbitMQ+Python的入门手册再合适不过了.不过,正如其标题Rabbit and ...
- php狼和兔子算法,PHP基于递归算法解决兔子生兔子问题php技巧
这篇文章主要介绍了PHP基于递归算法解决兔子生兔子问题,结合实例形式分析了兔子生兔子问题的php面试题采用循环与递归两种思路的解决方法,需要的朋友可以参考下 本文实例讲述了PHP基于递归算法解决兔子生 ...
- python兔子_python 实现兔子生兔子示例
如下所示: # -*- coding: utf-8 -*- # 简述:话说有一对可爱的兔子,出生后的第三个月开始,每一月都会生一对小兔子. # 当小兔子长到第三个月后,也会每个月再生一对小小兔子. # ...
- 一只兔子每三个月生兔子JAVA,兔子生兔子问题
关于兔子生兔子的算法详解 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔 子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 分析: 第1个月 -- 1对 第2 ...
- 兔子问题 php,PHP基于递归算法解决兔子生兔子问题php技巧
这篇文章主要介绍了PHP基于递归算法解决兔子生兔子问题,结合实例形式分析了兔子生兔子问题的php面试题采用循环与递归两种思路的解决方法,需要的朋友可以参考下 本文实例讲述了PHP基于递归算法解决兔子生 ...
- python兔子编程_Python兔子生兔子算法,编程练习题实例十一
Python兔子生兔子算法,编程练习题实例十一 Python兔子生兔子算法,编程练习题实例十一 没学习python之前就听说过一个兔子生兔子的数学算法问题.现在学习了python编程后,自然要用pyt ...
- java 兔子生兔子
标题 兔子生兔子 问题描述 假设一对兔子的成熟期是一个月,即一个月可长成成兔,那么,如果每对成兔每个月都生一对小兔,一对新生的小兔从第二个月起就开始生兔子,试问从一对兔子开始繁殖,以后每个月会有多少对 ...
- python生兔子问题(递归算法)_python 实现兔子生兔子示例
python 实现兔子生兔子示例 如下所示: # -*- coding: utf-8 -*- # 简述:话说有一对可爱的兔子,出生后的第三个月开始,每一月都会生一对小兔子. # 当小兔子长到第三个月后 ...
最新文章
- Go 学习笔记(77)— Go 第三方库之 cronexpr(解析 crontab 表达式,定时任务)
- Linux使用Shell脚本实现ftp的自动上传下载
- 小学计算机课型有哪几种,小学信息技术课上常用几种教学方法.doc
- 算法--------最大正方形(Java版本)
- 读书笔记12:观察者模式
- ustc小道消息20220120
- 面试金典--11.5
- Spring Cloud 微服务架构
- 帮助别人是一种快乐!
- JQuery动画之淡入淡出动画
- [WCF Step by Step 读书笔记] Chapter01 WCF 介绍
- 接口数组 java_java 数组和集合
- JAVA中inputstring_java IO流 之 字节输入流 InputString()
- Centos7搭建LAMP+Typecho博客
- php引用符号详解——————给变量起小名
- 华大单片机HC32L130/HC32L136红外端口配置
- 电子邮箱万一被盗该怎么办?
- 微软CRM锁定9大垂直产业
- jira与Jenkins集成
- 傅里叶光学(二)一维光栅与二维光栅的夫琅禾费衍射
热门文章
- iOS开发——加载、滑动翻阅大量图片解决方案详解
- go juju/ratelimit 简单使用
- Canonical Juju 使用笔记
- go juju/ratelimit 简单使用示例
- 《神经科学:探索脑》学习笔记(第12章 躯体感觉系统)
- 教育教学直播截图(未完待续)
- LeetCode1079题:活字印刷——Python递归与迭代解法
- Java学习笔记之五:Nexus配置为强制从maven私服下载
- rpc服务器不可用桌面图标消失,rpc服务器不可用,教您rpc服务器不可用怎么办
- win8信息服务器不可用怎么办,win8系统rpc服务器不可用怎么办?提示rpc服务器不可用处理方法介绍...