首页 > 其他分享 >兔子与兔子(hash模板题)

兔子与兔子(hash模板题)

时间:2023-02-03 10:32:01浏览次数:44  
标签:DNA int 兔子 long ull hash include 模板


题意描述:

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

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

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

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

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

输入格式

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

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

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

输出格式

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

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

数据范围

1≤length(S),m≤1000000

输入样例:

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

输出样例:

Yes
No
Yes

给的数据挺大的暴力起码是O(m k*k),肯定超时,如果先对字符串hash处理复杂度只有O(m*n);

AC代码:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<vector>
#include<stdlib.h>
#include<queue>
#include<map>
#include<vector>
#include<math.h>
const int INF = 0x3f3f3f3f;
using namespace std;
typedef long long ll;
typedef double ld;
typedef unsigned long long ull;
const int N = 1000010,base=131;///131进制的数来表示
int l,r;
int x,y;
char str[N];
ull h[N],p[N];

ull slove(int l,int r)
{
return h[r]-h[l-1]*p[r-l+1];
}
int main()
{
scanf("%s",str+1);
int n=strlen(str+1);
p[0]=1;///131的0次方为1.
for(int i=1; i<=n; i++)
{
h[i]=h[i-1]*base+str[i]-'a'+1;
p[i]=p[i-1]*base;
}
int q;
cin>>q;
while(q--)
{
cin>>l>>r>>x>>y;
ull ans1=slove(l,r);
ull ans2=slove(x,y);
if(l==x&&r==y)
{
cout<<"Yes"<<endl;
continue;
}
if(ans1==ans2)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
return 0;
}

 

标签:DNA,int,兔子,long,ull,hash,include,模板
From: https://blog.51cto.com/u_15952369/6035459

相关文章

  • 洛谷P3865 【模板】ST表
    题目背景这是一道ST表经典题——静态区间最大值请注意最大数据时限只有0.8s,数据强度不低,请务必保证你的每次查询复杂度为 O(1)O(1)题目描述给定一个长度为 NN 的数列,和 ......
  • 10 个免费的Bootstrap Admin 主题,模板收集
    Indesigningwebsitestoday,oneofthemusthaveframeworksisthetwitter bootstrap.Tothosewhodonothaveanexactideaaboutthebenefitofthisframew......
  • 数据结构-Hash常见操作实践
    数据结构-Hash常见操作实践目录介绍01.什么是哈希算法02.哈希算法的应用03.安全加密的场景04.唯一标识的场景05.数据校验的场景06.散列函数的场景07.Git版本的控......
  • 151道B端产品经理面试问题合集(全部有答案)文末送B端简历模板
    我会一直长期给你分享B端产品经理面试问题大全及答案大全,助你斩获心仪offer!请你去工忠号【B端产品经理面试问题及答案】,以免错失后续更多实用的B端产品经理面试技巧!你好,我是......
  • kubetpl - kubernetes 模板管理工具
    目录Helm、Kustomize、KubetplHelmKustomizeKubetpl安装KubetplKubetpl命令参数参数选项completion-参数自动补齐render-渲染模板go-template语法注释引用变量在te......
  • KPTP 汇报模板
    1.什么是KPTP它是由4个单词:Keep、Problem、Try、Plan的首字母组成的。K:keep,今天做了哪些工作;P:problem,遇到了哪些问题;T:try,计划尝试如何解决这些问题;P:plan,明天的计划......
  • 快收藏,2023有这些财务分析模板就够了
    相信很多的财务人都才刚刚经历一个兵荒马乱的年终,各种核算、整理、分析,工作量直线上升,说不定加班几点半个月都未必能歇一下。但不用担心,在接下来的2023里,可以通过BI财务分析......
  • ansible的部署和命令模板
    一、ansible的概述1、ansible简介Ansible是一款为类Unix系统开发的自由开源的配置和自动化工具。它用Python写成,类似于saltstack和Puppet,但是有一个不同和优点是我们......
  • 模板字符串
    ``新旧两版对比document.write('模板拼接'+zzz+'模板拼接')  document.write(`模板拼接${zzz}模板拼接`) 实例:letage=18document.write(......
  • TreeMap,HashMap,LinkedHashMap区别
    TreeMap,HashMap,LinkedHashMap之间的区别和TreeSet,HashSet,LinkedHashSet之间的区别相似。TreeMap:内部排序,内部使用了红黑树排序HashMap:无序。LinkedHashMap:顺序存取,内部是单......