AcWing 841

题目

AcWing 841


AC代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include<bits/stdc++.h>

#define IOS std::ios::sync_with_stdio(false),cin.tie(NULL),cout.tie(NULL)

using namespace std;

typedef unsigned long long ULL;

const int N = 100010, P = 131;

int n, m;
char str[N];
ULL h[N], p[N];

ULL get (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];
}
while (m --){
int l1, r1, l2 ,r2;
scanf("%d%d%d%d", &l1, &r1, &l2, &r2);

if (get(l1, r1) == get(l2,r2)) puts("Yes");
else puts("No");
}
return 0;
}