题解:
给我们n个单词,然后一个模式串,然后两种区间操作,一种是单点修改一个单词,一种是查询一个区间内是否是一个单词。
我们线段树维护区间哈希值。然后区间查询操作和区间。
#include <bits/stdc++.h>
using namespace std;
#define lson u<<1
#define rson u<<1|1
const int N=1e5+10,p=131;
typedef unsigned long long ull;
set<ull>st;
string str;
ull pre[N];
struct Node{
int l,r;
ull h;
}tr[N<<2];
ull hash_(string a)
{
ull res=0;
for(int i=0;i<a.length();i++) res=res*p+a[i];
return res;
}
void init()
{
pre[0]=1;
for(int i=1;i<N;i++) pre[i]=pre[i-1]*p;
}