题目链接
洛谷提交记录
我不理解,同一份代码同一道题,就是过不去。
最离谱的是他是答案错误。
#include <bits/stdc++.h>
using namespace std;
typedef unsigned long long ull;
const int MAXN = 1e5 + 10;
const int mod = 131;
int n;
int lens, len[MAXN];
int top;
ull h[MAXN], p[MAXN], st[MAXN];
char s[MAXN], t[MAXN];
int main() {
p[0] = 1;
for (int i = 1; i < MAXN; i++) p[i] = p[i - 1] * mod;
scanf("%s%d", s + 1, &n), lens = strlen(s + 1);
for (int i = 1; i <= n; i++) {
scanf("%s", t + 1), len[i] = strlen(t + 1);
for (int j = 1; j <= len[i]; j++) h[i] = h[i] * mod + t[j] - 'a';
}
for (int i = 1; i <= lens; i++) {
s[++top] = s[i], st[top] = st[top - 1] * mod + s[top] - 'a';
for (int j = 1; j <= n; j++) {
if (top - len[j] < 0) continue;
if (st[top] - st[top - len[j]] * p[len[j]] == h[j]) { top -= len[j]; break; }
}
}
s[top + 1] = '\0';
printf("%s\n", s + 1);
}