字符串哈希 -2025/11/14
字符串哈希
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10, P = 131;
typedef unsigned long long ull;
int n, m;
ull p[N], h[N];
char str[N];
ull find(int l ,int r){
return h[r] - h[l - 1] * p[r - l + 1];
}
int main(){
scanf("%d%d%s", &n, &m, str + 1);
p[0] = 1;
for(int i = 1; i <= n; i++){
p[i] = p[i - 1] * P;
h[i] = h[i - 1] * P + str[i];
}
multimap<int,int> mp;
while(m --){
int l1,r1,l2,r2;
cin >> l1 >> r1 >> l2 >> r2;
if(find(l1,r1) == find(l2, r2)) puts("Yes");
else puts("No");
}
return 0;
}

浙公网安备 33010602011771号