#include <cstring>
#include <iostream>
#include <queue>
#define S string
using namespace std;
struct trie
{
int fail;
int son[30];
int end;
} t[30000010];
int maxroot;
void build(S s)
{
int rt = 0;
for (int i = 0; i < s.size(); i++)
{
if (!t[rt].son[s[i] - 'a'])
{
t[rt].son[s[i] - 'a'] = ++maxroot;
}
rt = t[rt].son[s[i] - 'a'];
}
t[rt].end++;
return;
}
void fail()
{
queue<int> q;
for (int i = 0; i < 26; i++)
{
if (t[0].son[i])
{
t[t[0].son[i]].fail = 0;
q.push(t[0].son[i]);
}
}
while (!q.empty())
{
int x = q.front();
q.pop();
for (int i = 0; i < 26; i++)
{
if (t[x].son[i])
{
t[t[x].son[i]].fail = t[t[x].fail].son[i];
q.push(t[x].son[i]) ;
}
else
{
t[x].son[i] = t[t[x].fail].son[i];
}
}
}
}
int query(S s)
{
int now = 0, ans = 0;
for (int i = 0; i < s.size(); i++)
{
now = t[now].son[s[i] - 'a'];
for (int i = now; i && t[i].end != -1; i = t[i].fail)
{
ans += t[i].end;
t[i].end = -1;
}
}
return ans;
}
int main()
{
int n;
cin >> n;
for (int i = 1; i <= n; i++)
{
S s;
cin >> s;
build(s);
}
S s;
cin >> s;
cout << query(s);
return 0;
}
信息
- C++ 编译器: C:\Program Files (x86)\Dev-Cpp\TDM-GCC-64\bin\g++.exe
- 命令: g++.exe "D:\新文件3.cpp" -o "D:\新文件3.exe" -Ofast -m64 -std=gnu++11 -Wall -Wextra -Wl,-stack=134217728 -I"C:\Program Files (x86)\Dev-Cpp\TDM-GCC-64\include" -I"C:\Program Files (x86)\Dev-Cpp\TDM-GCC-64\x86_64-w64-mingw32\include" -I"C:\Program Files (x86)\Dev-Cpp\TDM-GCC-64\lib\gcc\x86_64-w64-mingw32\9.2.0\include" -I"C:\Program Files (x86)\Dev-Cpp\TDM-GCC-64\lib\gcc\x86_64-w64-mingw32\9.2.0\include\c++" -L"C:\Program Files (x86)\Dev-Cpp\TDM-GCC-64\lib" -L"C:\Program Files (x86)\Dev-Cpp\TDM-GCC-64\x86_64-w64-mingw32\lib" -static-libgcc -m64
D:\新文件3.cpp: In function 'void build(std::string)':
D:\新文件3.cpp:19:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long long unsigned int'} [-Wsign-compare]
19 | for (int i = 0; i < s.size(); i++)
| ~~^~~~~~~~~~
D:\新文件3.cpp: In function 'int query(std::string)':
D:\新文件3.cpp:64:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long long unsigned int'} [-Wsign-compare]
64 | for (int i = 0; i < s.size(); i++)
| ~~^~~~~~~~~~
C:/Program Files (x86)/Dev-Cpp/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/lib/../lib/crt2.o: in function `__tmainCRTStartup':
C:/crossdev/src/mingw-w64-v7-git20191109/mingw-w64-crt/crt/crtexe.c:259:(.text+0x1cd): relocation truncated to fit: R_X86_64_PC32 against symbol `__imp_Sleep' defined in .idata$5 section in C:\Program Files (x86)\Dev-Cpp\TDM-GCC-64\x86_64-w64-mingw32\lib/libkernel32.a(dqqts01409.o)
C:/crossdev/src/mingw-w64-v7-git20191109/mingw-w64-crt/crt/crtexe.c:286:(.text+0x25a): relocation truncated to fit: R_X86_64_PC32 against symbol `__imp_SetUnhandledExceptionFilter' defined in .idata$5 section in C:\Program Files (x86)\Dev-Cpp\TDM-GCC-64\x86_64-w64-mingw32\lib/libkernel32.a(dqqts01393.o)
C:/crossdev/src/mingw-w64-v7-git20191109/mingw-w64-crt/crt/crtexe.c:294:(.text+0x288): relocation truncated to fit: R_X86_64_PC32 against symbol `__mingw_winmain_hInstance' defined in COMMON section in C:/Program Files (x86)/Dev-Cpp/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/lib/../lib/crt2.o
C:/crossdev/src/mingw-w64-v7-git20191109/mingw-w64-crt/crt/crtexe.c:320:(.text+0x2ec): relocation truncated to fit: R_X86_64_PC32 against symbol `__mingw_winmain_lpCmdLine' defined in COMMON section in C:/Program Files (x86)/Dev-Cpp/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/lib/../lib/crt2.o
C:/crossdev/src/mingw-w64-v7-git20191109/mingw-w64-crt/crt/crtexe.c:246:(.text+0x465): relocation truncated to fit: R_X86_64_PC32 against symbol `__imp_GetStartupInfoA' defined in .idata$5 section in C:\Program Files (x86)\Dev-Cpp\TDM-GCC-64\x86_64-w64-mingw32\lib/libkernel32.a(dqqts00742.o)
C:/Program Files (x86)/Dev-Cpp/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0\libstdc++.a(fstream-inst.o):fstream-inst.cc:(.text$_ZNSt13basic_filebufIcSt11char_traitsIcEE9underflowEv[_ZNSt13basic_filebufIcSt11char_traitsIcEE9underflowEv]+0x3dc): relocation truncated to fit: R_X86_64_PC32 against symbol `__imp__errno' defined in .idata$5 section in C:\Program Files (x86)\Dev-Cpp\TDM-GCC-64\x86_64-w64-mingw32\lib/libmsvcrt.a(dwngs00201.o)
C:/Program Files (x86)/Dev-Cpp/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0\libstdc++.a(fstream-inst.o):fstream-inst.cc:(.text$_ZNSt13basic_filebufIwSt11char_traitsIwEE9underflowEv[_ZNSt13basic_filebufIwSt11char_traitsIwEE9underflowEv]+0x45f): relocation truncated to fit: R_X86_64_PC32 against symbol `__imp__errno' defined in .idata$5 section in C:\Program Files (x86)\Dev-Cpp\TDM-GCC-64\x86_64-w64-mingw32\lib/libmsvcrt.a(dwngs00201.o)
C:/Program Files (x86)/Dev-Cpp/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0\libstdc++.a(fstream-inst.o):fstream-inst.cc:(.text$_ZNSt13basic_filebufIcSt11char_traitsIcEE6xsgetnEPcx[_ZNSt13basic_filebufIcSt11char_traitsIcEE6xsgetnEPcx]+0x254): relocation truncated to fit: R_X86_64_PC32 against symbol `__imp__errno' defined in .idata$5 section in C:\Program Files (x86)\Dev-Cpp\TDM-GCC-64\x86_64-w64-mingw32\lib/libmsvcrt.a(dwngs00201.o)
C:/Program Files (x86)/Dev-Cpp/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0\libstdc++.a(fstream-inst.o):fstream-inst.cc:(.text$_ZNSt13basic_filebufIwSt11char_traitsIwEE6xsgetnEPwx[_ZNSt13basic_filebufIwSt11char_traitsIwEE6xsgetnEPwx]+0x23c): relocation truncated to fit: R_X86_64_PC32 against symbol `__imp__errno' defined in .idata$5 section in C:\Program Files (x86)\Dev-Cpp\TDM-GCC-64\x86_64-w64-mingw32\lib/libmsvcrt.a(dwngs00201.o)
C:/Program Files (x86)/Dev-Cpp/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0\libstdc++.a(basic_file.o):basic_file.cc:(.text$_ZN12_GLOBAL__N_1L6xwriteEiPKcx+0xd): relocation truncated to fit: R_X86_64_PC32 against symbol `__imp__errno' defined in .idata$5 section in C:\Program Files (x86)\Dev-Cpp\TDM-GCC-64\x86_64-w64-mingw32\lib/libmsvcrt.a(dwngs00201.o)
C:/Program Files (x86)/Dev-Cpp/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0\libstdc++.a(basic_file.o):basic_file.cc:(.text$_ZNSt12__basic_fileIcE8sys_openEP6_iobufSt13_Ios_Openmode+0x1c): additional relocation overflows omitted from the output
collect2.exe: error: ld returned 1 exit status