Acwing 138. 兔子与兔子(hash)
题目大意:字符串hash模板题
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define N 1000002
#define ull unsigned long long
const ull base=131;
char s[N];
int m,len;
ull f[N],p[N];
ull get_hash(int l,int r)
{
return f[r]-f[l-1]*p[r-l+1];
}
int main()
{
scanf("%s",s+1);
len=strlen(s+1);
p[0]=1;
for(int i=1;i<=len;i++)
{
p[i]=p[i-1]*base;
f[i]=f[i-1]*base+(s[i]-'a'+1);
}
scanf("%d",&m);
for(int i=1;i<=m;i++)
{
int l1,r1,l2,r2;
scanf("%d%d%d%d",&l1,&r1,&l2,&r2);
if(get_hash(l1,r1)==get_hash(l2,r2))
{
printf("Yes\n");
}else printf("No\n");
}
return 0;
}