ababaaabbbbbbbaabaaaaababababbaaabbaabaabaabaaabbaaababbbabbaababbaabbababbaabbaaabbabbbaaaabaabbbaa
<2000107 bytes omitted>
用户输出
0
系统信息
Exited with return code 0
编号 | 题目 | 状态 | 分数 | 总时间 | 内存 | 代码 / 答案文件 | 提交者 | 提交时间 |
---|---|---|---|---|---|---|---|---|
#20587 | #1059. 1-07E. JM的模板题 | Accepted | 100 | 12595 ms | 240024 K | C++ / 1.9 K | 电类809-廖原 | 2019-07-26 11:09:22 |
#include <cstdio>
#include <algorithm>
#include <vector>
#include <cstring>
#define ULL unsigned long long
#define LL long long
using namespace std;
char ch;
bool fh;
inline void read(int &a) {
for (fh = 0, ch = getchar(); ch < '0' || ch > '9'; ch = getchar())
if (ch == '-')
fh = 1;
for (a = 0; ch >= '0' && ch <= '9'; ch = getchar()) (a *= 10) += ch - '0';
if (fh)
a = -a;
}
char an[1000010];
char bn[1000010];
int lena, lenb;
struct suffix_automaton {
struct node {
int ne[26], step;
} A[1000010 * 2];
int pre[1000010 * 2];
int last, cnt;
int Fin[1000010 * 2];
int Size[1000010 * 2];
inline void New(int st) { A[++cnt].step = st; }
int p, np, q, nq, vi;
void Extend(int ch) {
//在这里ch是已经减过'A'的 了
New(A[last].step + 1);
p = last;
np = cnt;
Size[np] = 1;
for (; p && !A[p].ne[ch]; p = pre[p]) A[p].ne[ch] = np;
if (!p)
pre[np] = 1;
else {
q = A[p].ne[ch];
if (A[q].step != A[p].step + 1) {
New(A[p].step + 1);
nq = cnt;
for (vi = 0; vi < 26; vi++) A[nq].ne[vi] = A[q].ne[vi];
pre[nq] = pre[q];
pre[q] = pre[np] = nq;
for (; A[p].ne[ch] == q; p = pre[p]) A[p].ne[ch] = nq;
} else
pre[np] = q;
}
last = np;
}
void Build() {
int vj;
cnt = last = 1;
for (vj = 1; vj <= lena; vj++) Extend(an[vj] - 'a');
}
int Stk[1000010 * 2];
int stktop;
void Topu() {
int vi;
for (vi = 1; vi <= cnt; vi++) Fin[pre[vi]]++;
for (vi = 1; vi <= cnt; vi++)
if (!Fin[vi])
Stk[++stktop] = vi;
for (; stktop;) {
p = Stk[stktop--];
Size[pre[p]] += Size[p];
Fin[pre[p]]--;
if (!Fin[pre[p]] && pre[p])
Stk[++stktop] = pre[p];
}
}
int Run() {
int vi;
for (p = 1, vi = 1; vi <= lenb; p = A[p].ne[bn[vi] - 'a'], vi++)
if (!A[p].ne[bn[vi] - 'a'])
return 0;
return Size[p];
}
} D;
int num;
LL ans;
int main() {
scanf("%s", an + 1);
lena = strlen(an + 1);
D.Build();
D.Topu();
scanf("%d\n", &num);
for (; num; num--) {
scanf("%s", bn + 1);
lenb = strlen(bn + 1);
ans += D.Run();
}
printf("%lld\n", ans);
}
ababaaabbbbbbbaabaaaaababababbaaabbaabaabaabaaabbaaababbbabbaababbaabbababbaabbaaabbabbbaaaabaabbbaa
<2000107 bytes omitted>
用户输出
0
系统信息
Exited with return code 0
bbaaaabaaaabbbbaaabbbbabbaaabaaabbbbbaaabababaabbbaaabbabaaaababaaabababbabaaababbbabbabababaaaababb
<2000107 bytes omitted>
用户输出
0
系统信息
Exited with return code 0
ababbbaaaababbababaaabbbbabbaabaabbaaababbabbbaaaaaabababbbbabaababaabaaaaaabbbabbabbbbbbbbabbababba
<2000107 bytes omitted>
用户输出
0
系统信息
Exited with return code 0
bbbbbabbaaabbaaabbabbbabbbabbabaaababbaaabaaabababbaaaabbaaabbbbbbbabbabaabbaabbabababaaaaababbabaaa
<2000107 bytes omitted>
用户输出
0
系统信息
Exited with return code 0
abaaaaaabbaaaaabaabaabbaaaaabbbbbaababbaaabbaaababbbbaaaaaaaaaaabaababbabbbbaaaaababbbbbbaabbbbabbab
<2000107 bytes omitted>
用户输出
0
系统信息
Exited with return code 0
babbbbbabbaabbbbabbbababbaaabaabaaabaabbaabbbabbbaaabbbabbbbbbbabbbabaabbbbabbbababaaaabbababaababaa
<2000107 bytes omitted>
用户输出
0
系统信息
Exited with return code 0
baaaaaaaaabaabbbbbbabababbaabaababbbaababbbbabaabababaabbabaabaabbaaaabaaabbabaabbbbbbabababbbbbbabb
<2000107 bytes omitted>
用户输出
0
系统信息
Exited with return code 0
baababbbbbbbbaaabbbbbbbbbabbaabbaaaaabababbbbbabbbababaaaaabababbbaababaaaabbbababababbaabbaabbabbab
<2000107 bytes omitted>
用户输出
0
系统信息
Exited with return code 0
abbbbaabbbbbaabbaaabaaabbbbabbbaaabbbbaaababbbbbbabbaaababaaaaaaabaabbbaaabbbaabbbabbbbabbbbbaababba
<2000107 bytes omitted>
用户输出
0
系统信息
Exited with return code 0
aaababbbaabbabaaaababbabaaabaabbaabbbbbbbaababbabbbaaababbaabbaaabbabababbaabaaabaaababaaaaaabbabbba
<2000107 bytes omitted>
用户输出
0
系统信息
Exited with return code 0
cbedbecbbaacaaedadbaaadebacdcdeaebdeaeccaeccedcddadcaeddadcedebeadeeebabeebadaeeccabaececebdabcdcbbe
<2199910 bytes omitted>
用户输出
10266
系统信息
Exited with return code 0
caacebdeebebecebcabecedeccdcacaaadeddaddbebeddecaddcebdeaababaebadbbebacdabccdcbdbabdadaeccdecbcccde
<2199910 bytes omitted>
用户输出
10165
系统信息
Exited with return code 0
ecacbcbaccbacdedebaebeabaaeabccbedaaceaaeabbbcbbacadbbadeceacbdbdebadcdabcdeeebaaedaaacacebbccecaddb
<2199910 bytes omitted>
用户输出
10003
系统信息
Exited with return code 0
dbcdaaebbadbddcebebbbcaabebbadbaeddeadcccddedbabcdbdeebbebbbdaecdadedcaaabedcecbdcdbadbeabeaebcceccb
<2199910 bytes omitted>
用户输出
10297
系统信息
Exited with return code 0
eddecaacdbacbedaaaecacecdaedbdcbcaeeddedaacbecbabcbababcbddbabbbaccebcbbecdadadcbeabbdadabbdecdeacee
<2199910 bytes omitted>
用户输出
10355
系统信息
Exited with return code 0
cdacecdebdabeeedddadbdaabbdecaeaabebaaacdcccddebbeeaecdedcacbaabedccdececbdbbcdedbeaccbeaeeebdaaaceb
<2199910 bytes omitted>
用户输出
10238
系统信息
Exited with return code 0
cddbdacadcdcdeebcbedaeaeaabbbedabecddeaecededdeddddeececadceabcdcbedeccbeeaccbccaeeddaecccbeaedebeba
<2199910 bytes omitted>
用户输出
10314
系统信息
Exited with return code 0
ecdceedcbcbdbccbccbbeeeceeedcaaeebecceaaecacbacdcdebbceaecddacaadeeedbbeacdbdccccbeaebeaacbdcdecaacd
<2199910 bytes omitted>
用户输出
10392
系统信息
Exited with return code 0
adeedbeeccaadcebededeadbbbddebdcbcabcbaaddaccdddddeebdeccdedbdbcccebcbdbbcbdcbeeacdbaaebdebadbdaecad
<2199910 bytes omitted>
用户输出
10195
系统信息
Exited with return code 0
abcacbdccbdaeebbccbbdadacaebceebdacbbcccebdcbacddbabaeccdbcbeeecddeddacabadbbbceeadbaabbcdeedeadcedd
<2199910 bytes omitted>
用户输出
10374
系统信息
Exited with return code 0
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
<1502408 bytes omitted>
用户输出
999500500
系统信息
Exited with return code 0
nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
<1502408 bytes omitted>
用户输出
999500500
系统信息
Exited with return code 0
nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
<1502408 bytes omitted>
用户输出
999500500
系统信息
Exited with return code 0
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
<1502408 bytes omitted>
用户输出
999500500
系统信息
Exited with return code 0
dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
<1502408 bytes omitted>
用户输出
999500500
系统信息
Exited with return code 0
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
<1502408 bytes omitted>
用户输出
999500500
系统信息
Exited with return code 0
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
<1502408 bytes omitted>
用户输出
999500500
系统信息
Exited with return code 0
jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj
<1502408 bytes omitted>
用户输出
999500500
系统信息
Exited with return code 0
pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
<1502408 bytes omitted>
用户输出
999500500
系统信息
Exited with return code 0