社区讨论
关于如何在KMP模板中跑的比KMP还快(雾)
题目总版参与者 4已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @locpeojm
- 此快照首次捕获于
- 2023/10/30 17:34 2 年前
- 此快照最后确认于
- 2023/11/05 04:26 2 年前
- 在子串查找(KMP模板)中为什么下面两个代码跑的比 KMP、SUNDAY 还快(关键是这么短)!!!
# #define c(u,s)for(;s[++i];j+=!q,u)for(;q=s[i]^t[j],j*q;)j=f[j];
q, f[1 << 20], i, j, x;
main() {
char s[q = 1E6], t[q];
scanf("%s%s", s, t);
c(f[i + 1] = j, t)i = -1, j = 0;
c(x += !t[j], s)printf("%d", x);
}
CPP#include <bits/stdc++.h>
char x = 233, a[1000005], b[1000005];
long long n, m, i, A, T = 1, B, ans;
int main() {
for (gets(a), gets(b), n = strlen(a), m = strlen(b); i < m; ++i)
A = A * x + a[i], B = B * x + b[i], T = T * x;
for (ans = A == B; i < n; ++i)
A = A * x + a[i] - T * a[i - m], ans += A == B;
printf("%d\n", ans);
}
回复
共 3 条回复,欢迎继续交流。
正在加载回复...