字符串哈希 -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;
}
posted @ 2025-11-12 15:40  XYu1230  阅读(3)  评论(0)    收藏  举报