AcWing 841. 字符串哈希
原题链接
简单
作者:
Aaron_wch
,
2021-06-05 18:59:29
,
所有人可见
,
阅读 233
视频只看到了y总说“P进制”时恍然大悟,写了个带快速幂的前缀,不知道是不是最优哈希解(马上回去看完
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+10,mod=1e7+3,p=59;
int n,m,s[N],a,b,c,d;
int KSM(int y)
{
int ans=1,x=p;
for(;y;)
{
if(y&1)ans=int(ll(ans)*x%mod);
y>>=1,x=int(ll(x)*x%mod);
}return ans;
}
int sect(int l,int r)
{
int x=int(ll(s[l-1])*KSM(r-l+1)%mod);
return ((s[r]-x)%mod+mod)%mod;
}
string t;
int main()
{
scanf("%d%d",&n,&m);
cin>>t;
t='1'+t;
for(int i=1;i<=n;i++)s[i]=(s[i-1]*p+t[i]-'A')%mod;
for(;m--;)
{
scanf("%d%d%d%d",&a,&b,&c,&d);
if(sect(a,b)==sect(c,d))printf("Yes\n");
else printf("No\n");
}
return 0;
}
!!本蒟蒻竟然猜对了!!