博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AcWing 兔子与兔子
阅读量:4484 次
发布时间:2019-06-08

本文共 1375 字,大约阅读时间需要 4 分钟。

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

aabbaabb31 3 5 71 3 6 81 2 1 2

Sample Output

YesNoYes

题解:

  • 字符串哈希。
  • 模版题。用递推算出前i位的哈希值(1 <= i <= .size()),然后用前缀和方法得到想要的区间的哈希值。比较即可。
#include 
#include
#include
#define N 1000005#define ull unsigned long longusing 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

你可能感兴趣的文章
MySQL服务器的安装和配置,MySQL Workbench 8.0.12安装,MySQL的基本使用
查看>>
扑克序列
查看>>
java笔记--适配器模式的运用
查看>>
Replace Nested Conditional with Guard Clauses(用卫语句代替嵌套循环)
查看>>
jsp中${}是EL表达式的常规表示方式
查看>>
GoldenGate常见问题及处理
查看>>
Android JNI学习(五)——Demo演示
查看>>
java map合并_java 实现合并map示例Demo1
查看>>
java 8 string_String.join() --Java8中String类新增方法
查看>>
java 布局教程_java布局学习(新)
查看>>
你真的会写Java吗?
查看>>
alibaba.fastjson.JSONObject 解析
查看>>
终于有人把Elasticsearch原理讲透了
查看>>
Java使用POI 读取和写入Excel指南
查看>>
shell脚本中各类括号的作用(小结)
查看>>
借用Snippet插件美化博客中的代码
查看>>
深入研究java.lang.Runtime类
查看>>
10677 我们仍未知道那天所看见的花的名字
查看>>
ScanTailor-ScanTailor 自动矫正图像歪斜
查看>>
UVA GCD - Extreme (II)
查看>>