字符串哈希模板:
ull p[300000],h[300000];
char s[300000];//字符串从1开始存储
ll n,m;
void Hash()
{
ll seed=131;
p[0]=1;
for(ll i=1;i<=n;i++)
{
p[i]=p[i-1]*seed;
h[i]=h[i-1]*seed+s[i];
}
}
ll get(ll l1,ll r1,ll l2,ll r2)
{
ll p1=h[r1]-h[l1-1]*p[r1-l1+1];//将1到R的哈希值减去(1到L-1的哈希值乘于要补齐的位数)
ll p2=h[r2]-h[l2-1]*p[r2-l2+1];
return p1==p2 ? 1 : 0;
}