AcWing 兔子与兔子

Description

  • 很久很久以前,森林里住着一群兔子。

    有一天,兔子们想要研究自己的 DNA 序列。

    我们首先选取一个好长好长的 DNA 序列(小兔子是外星生物,DNA 序列可能包含 26 个小写英文字母)。

    然后我们每次选择两个区间,询问如果用两个区间里的 DNA 序列分别生产出来两只兔子,这两个兔子是否一模一样。

    注意两个兔子一模一样只可能是他们的 DNA 序列一模一样。

Input

  • 第一行输入一个 DNA 字符串 S。

    第二行一个数字 m,表示 m 次询问。

    接下来 m 行,每行四个数字 l1,r1,l2,r2,分别表示此次询问的两个区间,注意字符串的位置从1开始编号。

Output

  • 对于每次询问,输出一行表示结果。

    如果两只兔子完全相同输出 Yes,否则输出 No(注意大小写)。

Data Size

  • 1≤length(S),m≤1000000

Sample Input

aabbaabb
3
1 3 5 7
1 3 6 8
1 2 1 2

Sample Output

Yes
No
Yes

题解:

  • 字符串哈希。
  • 模版题。用递推算出前i位的哈希值(1 <= i <= .size()),然后用前缀和方法得到想要的区间的哈希值。比较即可。
#include <iostream>
#include <cstdio>
#include <string>
#define N 1000005
#define ull unsigned long long
using namespace std;ull f[N], p[N] = {1};
int q;int read()
{int x = 0; char c = getchar();while(c < '0' || c > '9') c = getchar();while(c >= '0' && c <= '9') {x = x * 10 + c - '0'; c = getchar();}return x;
}int main()
{string t; cin >> t;for(int i = 0; i < t.size(); i++)f[i + 1] = f[i] * 131 + (t[i] - 'a' + 1),p[i + 1] = p[i] * 131;cin >> q;for(int i = 1; i <= q; i++){int l1 = read(), r1 = read();int l2 = read(), r2 = read();ull v1 = f[r1] - f[l1 - 1] * p[r1 - l1 + 1];ull v2 = f[r2] - f[l2 - 1] * p[r2 - l2 + 1];printf(v1 == v2 ? "Yes\n" : "No\n");}return 0;
}

转载于:https://www.cnblogs.com/BigYellowDog/p/11343489.html

AcWing 兔子与兔子相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

  7. java 兔子生兔子

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

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

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

  9. C语言例题理解(小写字母转换成大写字母,兔子生兔子问题,求100以内勾股数,整数逆序输出)

    例一(小写字母转换成大写字母) #include <stdio.h> int main() {char x,y;printf("输入一个小写字母:\n");x=getc ...

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

    来源:http://blog.ftofficer.com/2010/03/translation-rabbitmq-python-rabbits-and-warrens/ RabbitMQ作为一个工业 ...

最新文章

  1. UnityVS(Visual Studio Tools For Unity)的安装与使用
  2. 51 nod 1427 文明 (并查集 + 树的直径)
  3. [软件工程基础]结对项目 数独程序扩展
  4. 卖萌屋原创专辑首发,算法镇魂三部曲!
  5. 240多个jQuery插件 (转)
  6. 浏览器播放rtsp流媒体解决方案
  7. scrapy 命令行基本用法
  8. ERROR: “System.Web.Mvc.Controller.File(string, string, string)”是一个“方法”
  9. 第三方支付平台基本概念
  10. Linux系统下为WPS添加字体,实现WPS输入中文
  11. 手机怎样和宽带连接无线路由器设置路由器连接服务器,手机如何设置路由器?...
  12. NCEPU-EDM使用说明
  13. CONTINUOUS CONTROL WITH DEEP REINFORCEMENT LEARNING
  14. Mysql出现 “ERROR 1062” 的解决方法
  15. iOS平台游戏安全再议之存档修改与防御
  16. 教程篇(7.0) 09. FortiGate安全 应用控制 ❀ Fortinet 网络安全专家 NSE 4
  17. iPad网游输入优化
  18. 运用特征脸方法的基于Opencv的猫脸检测实现
  19. Cisco 防火墙Firwall Failover ActiveActive 双HSRP 实现双ISP完美切换
  20. 接口思想将kafka topic写入到hbase中

热门文章

  1. 通达oa系统怎么转移到服务器,通达OA升级心通达OA操作步骤规范
  2. SSIM PSNR db
  3. python判断文字是否是中文
  4. 蓝牙开发那些事儿(1)——从抓包数据开始
  5. 最新kali之masscan
  6. HTML表格:日常消费账单表格展示网页
  7. 408计算机考试科目英语数学,关于计算机考研408的那些事儿
  8. 电子签名,后疫情时代“智慧校园”创新新方向
  9. 静态代理和动态代理详解
  10. 进程的初步认识(程序与进程、并发、单道程序设计、多道程序设计、CPU、MMU)