/*pragram by mangoyang*/
#include<bits/stdc++.h>
#define inf (0x7f7f7f7f)
#define Max(a, b) ((a) > (b) ? (a) : (b))
#define Min(a, b) ((a) < (b) ? (a) : (b))
typedef long long ll;
using namespace std;
template <class T>
inline void read(T &x){
int f = 0, ch = 0; x = 0;
for(; !isdigit(ch); ch = getchar()) if(ch == '-') f = 1;
for(; isdigit(ch); ch = getchar()) x = x * 10 + ch - 48;
if(f) x = -x;
}
const int N = 3500005;
ll ans, n, all;
char s[N]; int Q;
struct SuffixAutomaton{
vector<int> g[N], v;
ll dep[N], sz[N], dd[N];
int ch[N][26], fa[N], tail, size;
inline SuffixAutomaton(){ size = tail = 1; }
inline int newnode(int x){ return dep[++size] = x, size; }
inline void ins(int c, int ff){
int p = tail, np = newnode(dep[p] + 1);
if(!ff) sz[np] = 1; else v.push_back(np);
for(; p && !ch[p][c]; p = fa[p]) ch[p][c] = np;
if(!p) return (void) (fa[np] = 1, tail = np);
int q = ch[p][c];
if(dep[q] == dep[p] + 1) fa[np] = q;
else{
int nq = newnode(dep[p] + 1);
fa[nq] = fa[q], fa[np] = fa[q] = nq;
if(ff == 1) sz[nq] = sz[q];
for(int i = 0; i < 26; i++) ch[nq][i] = ch[q][i];
for(; p && ch[p][c] == q; p = fa[p]) ch[p][c] = nq;
}tail = np;
}
inline void addedge(){
for(int i = 2; i <= size; i++) g[fa[i]].push_back(i);
}
inline void dfs(int u){
for(int i = 0; i < g[u].size(); i++)
dfs(g[u][i]), sz[u] += sz[g[u][i]];
}
inline ll calc(char *s){
tail = 1;
v.clear(); ll len = strlen(s), ans = 0, all = 0;
for(int i = 0; i < len; i++) ins(s[i] - 'a', 1);
for(int i = 0; i < v.size(); i++){
int u = v[i];
for(int p = u; p; p = fa[p]) {
if(dd[p]) break;
if(sz[p]) ans += dep[p] - dep[fa[p]];
all += dep[p] - dep[fa[p]], dd[p] = 1;
}
}
for(int i = 0; i < v.size(); i++){
int u = v[i];
for(int p = u; p; p = fa[p]){
if(!dd[p]) break; dd[p] = 0;
}
}
return all - ans;
}
}van;
int main(){
scanf("%s", s); n = strlen(s), read(Q);
//if(Q == 1) return Dark::solve(), 0;
for(int i = 0; i < n; i++) van.ins(s[i] - 'a', 0);
van.addedge(), van.dfs(1);
while(Q--){
int l, r;
scanf("%s", s), read(l), read(r);
printf("%lld\n", van.calc(s));
}
return 0;
}
| Compilation | N/A | N/A | Compile OK | Score: N/A | 显示更多 |
| Testcase #1 | 17.748 ms | 87 MB + 644 KB | Accepted | Score: 4 | 显示更多 |
| Testcase #2 | 17.899 ms | 87 MB + 848 KB | Accepted | Score: 4 | 显示更多 |
| Testcase #3 | 18.019 ms | 88 MB + 128 KB | Accepted | Score: 4 | 显示更多 |
| Testcase #4 | 134.951 ms | 178 MB + 288 KB | Accepted | Score: 4 | 显示更多 |
| Testcase #5 | 130.421 ms | 175 MB + 420 KB | Accepted | Score: 4 | 显示更多 |
| Testcase #6 | 217.932 ms | 292 MB + 208 KB | Accepted | Score: 4 | 显示更多 |
| Testcase #7 | 216.653 ms | 292 MB + 216 KB | Accepted | Score: 4 | 显示更多 |
| Testcase #8 | 116.331 ms | 132 MB + 312 KB | Accepted | Score: 4 | 显示更多 |
| Testcase #9 | 54.017 ms | 129 MB + 72 KB | Accepted | Score: 4 | 显示更多 |
| Testcase #10 | 250.264 ms | 181 MB + 488 KB | Accepted | Score: 4 | 显示更多 |
| Testcase #11 | 118.895 ms | 181 MB + 864 KB | Accepted | Score: 4 | 显示更多 |
| Testcase #12 | 442.035 ms | 233 MB + 720 KB | Accepted | Score: 4 | 显示更多 |
| Testcase #13 | 199.643 ms | 234 MB + 432 KB | Accepted | Score: 4 | 显示更多 |
| Testcase #14 | 605.332 ms | 286 MB + 600 KB | Accepted | Score: 4 | 显示更多 |
| Testcase #15 | 290.822 ms | 285 MB + 644 KB | Accepted | Score: 4 | 显示更多 |
| Testcase #16 | 772.174 ms | 339 MB + 808 KB | Accepted | Score: 4 | 显示更多 |
| Testcase #17 | 388.764 ms | 334 MB + 720 KB | Accepted | Score: 4 | 显示更多 |
| Testcase #18 | 629.156 ms | 282 MB + 28 KB | Wrong Answer | Score: 0 | 显示更多 |
| Testcase #19 | 678.938 ms | 300 MB + 920 KB | Wrong Answer | Score: 0 | 显示更多 |
| Testcase #20 | 726.859 ms | 319 MB + 984 KB | Wrong Answer | Score: 0 | 显示更多 |
| Testcase #21 | 767.247 ms | 339 MB + 768 KB | Wrong Answer | Score: 0 | 显示更多 |
| Testcase #22 | 780.708 ms | 339 MB + 972 KB | Wrong Answer | Score: 0 | 显示更多 |
| Testcase #23 | 767.122 ms | 339 MB + 516 KB | Wrong Answer | Score: 0 | 显示更多 |
| Testcase #24 | 772.22 ms | 340 MB + 80 KB | Wrong Answer | Score: 0 | 显示更多 |
| Testcase #25 | 772.234 ms | 339 MB + 364 KB | Wrong Answer | Score: 0 | 显示更多 |