ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#200493 | #2422. 名字 | Anonyme | 100 | 335ms | 24968kb | C++11 | 1.9kb | 2024-01-04 09:28:50 | 2024-01-04 12:06:11 |
answer
#include <bits/stdc++.h>
using namespace std;
#define QwQ330AwA return 0
#define ll long long
const int N = 1e5 + 5;
int n, m;
string s[N];
struct Tree {
int fail;
int ch[26];
} t[N];
int tot;
int ed[N];
int ins(string s) {
int u = 0;
for (auto x : s) {
if (!t[u].ch[x - 'a']) t[u].ch[x - 'a'] = ++tot;
u = t[u].ch[x - 'a'];
}
return u;
}
void build() {
queue <int> q;
int u = 0;
for (int i = 0; i < 26; i++) {
if (t[u].ch[i]) {
q.push(t[u].ch[i]);
t[t[u].ch[i]].fail = 0;
}
}
while (!q.empty()) {
u = q.front();
q.pop();
for (int i = 0; i < 26; i++) {
if (t[u].ch[i]) {
q.push(t[u].ch[i]);
t[t[u].ch[i]].fail = t[t[u].fail].ch[i];
} else t[u].ch[i] = t[t[u].fail].ch[i];
}
}
}
vector <int> e[N];
int L[N], R[N], tim;
void dfs(int u) {
L[u] = ++tim;
for (auto v : e[u]) dfs(v);
R[u] = tim;
}
vector < pair <int, int> > add[N], del[N];
int ans[N];
int tr[N];
void upd(int x) {
for (; x <= tot + 1; x += x & (-x)) tr[x]++;
}
int query(int x) {
int res = 0;
for (; x; x -= x & (-x)) res += tr[x];
return res;
}
int query(int l, int r) {
return query(r) - query(l - 1);
}
signed main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n >> m;
for (int i = 1; i <= n; i++) cin >> s[i], ed[i] = ins(s[i]);
build();
for (int i = 1; i <= tot; i++) e[t[i].fail].push_back(i);
dfs(0);
for (int i = 1; i <= m; i++) {
int l, r, k;
cin >> l >> r >> k;
del[l - 1].push_back({k, i});
add[r].push_back({k, i});
}
for (int i = 1; i <= n; i++) {
int u = 0;
for (auto x : s[i]) {
u = t[u].ch[x - 'a'];
upd(L[u]);
}
for (auto qwq : del[i]) ans[qwq.second] -= query(L[ed[qwq.first]], R[ed[qwq.first]]);
for (auto qwq : add[i]) ans[qwq.second] += query(L[ed[qwq.first]], R[ed[qwq.first]]);
}
for (int i = 1; i <= m; i++) cout << ans[i] << '\n';
QwQ330AwA;
}
详细
小提示:点击横条可展开更详细的信息
Test #1:
score: 10
Accepted
time: 0ms
memory: 9132kb
input:
10 100 bc a aaa aaaccaaaca caaabacbcaaaaccaaaaaccaaacaccaaaa aaabacacbccbccaaabacbc accaaaa aaaccaaa...
output:
12 0 1 48 7 0 56 1 15 3 1 1 49 46 11 18 4 5 13 45 1 4 32 18 1 1 7 10 0 18 1 5 1 1 1 4 53 55 1 24 4 1...
result:
ok 100 lines
Test #2:
score: 10
Accepted
time: 3ms
memory: 9136kb
input:
5 100 ejmljknnjeldejmljknje ldejmljknnjeldejmljknnjfldejmlj jmkjknjeld fldejmljknnjeldejmljknjeldejm...
output:
6 5 1 7 10 5 8 2 6 6 3 8 4 5 4 1 5 4 9 5 7 3 6 5 4 9 5 4 5 3 5 9 9 8 10 5 1 4 3 2 8 4 4 1 1 8 7 5 4 ...
result:
ok 100 lines
Test #3:
score: 10
Accepted
time: 0ms
memory: 9256kb
input:
50 1000 aaacaaaabaaaaaaa a aaaacaaaabaaaaaaaabaaaa aaaaaaaaacaaaabaaaaaaaabaaaaaaaaaaa acbbaaabacaaa...
output:
129 77 0 21 274 11 72 109 26 7 284 18 173 19 349 8 15 5 27 6 51 311 39 371 1 3 44 6 12 492 323 346 3...
result:
ok 1000 lines
Test #4:
score: 10
Accepted
time: 3ms
memory: 9260kb
input:
30 1000 mgenjcfodhnmgenjcfodhnm genjcfodhnmgenjcfodhnmgenjcfodhnmenjcfodhnmgenjcfodhnmenjcfodhnmgenj...
output:
23 10 77 28 11 25 40 8 56 41 15 0 2 39 2 52 79 4 60 4 10 40 20 84 82 8 0 4 42 24 6 68 23 3 7 10 77 4...
result:
ok 1000 lines
Test #5:
score: 10
Accepted
time: 49ms
memory: 19936kb
input:
500 100000 bcabcbbbcacaabccbccacaccbcacbccccbbaaabbabcbcccaababccbcabcbbbcacaabccbccacaccbcacb cccbb...
output:
14 3954 226 633 528 2614 257 53 440 148 2144 768 268 17 284 185 234 30 481 495 202 0 1338 1694 4910 ...
result:
ok 100000 lines
Test #6:
score: 10
Accepted
time: 57ms
memory: 21520kb
input:
500 100000 ehecbhadefejeehecehecbhadefejeehecehecbhadefejeehecehecbhadefejeehecehecbhadefejeehecehec...
output:
251 669 335 2013 1080 23 196 450 4697 1291 35 32 1332 9 45 877 723 1340 327 138 225 218 376 194 48 1...
result:
ok 100000 lines
Test #7:
score: 10
Accepted
time: 66ms
memory: 24208kb
input:
200 100000 cefdicgefchdcbbfabajbdhcga efchcgacfahcgacfaaicfbhihciadedhacafcefdicgefchcgacfahcgacfaai...
output:
6 150 1 380 125 482 75 560 7 180 13 0 134 41 5 599 299 6 23 108 0 171 212 220 39 136 9 62 100 132 8 ...
result:
ok 100000 lines
Test #8:
score: 10
Accepted
time: 44ms
memory: 21248kb
input:
500 100000 qhyovpqmdmxzpedsswqrydaogpfjitkxfowgmxglflchcnxzjkcfqhylvpqmdmxzpedsswqrydaogpfjitkxfowgm...
output:
206 393 721 78 191 1162 84 3302 1404 918 31 57 62 234 27 150 2744 1260 88 71 193 208 1437 853 2093 4...
result:
ok 100000 lines
Test #9:
score: 10
Accepted
time: 58ms
memory: 24968kb
input:
200 100000 jjidrjrmjjhkrxsraaaqduplrcznisidrjrmjjidxjrmjjrxsraaaqaaqduslrcznisidrjrmjjidrjrmjjhkrxsr...
output:
6 390 975 291 3 136 6 264 160 125 98 1794 1 17 493 0 2 310 40 1589 11 3 81 146 13 450 5 216 11 66 43...
result:
ok 100000 lines
Test #10:
score: 10
Accepted
time: 55ms
memory: 18704kb
input:
1000 100000 cbabbcbbbbcbbbccacbabbcbbbbcbbbccacbabbcbbbbcbbbccacbabbcbbbbcbbbccacbabbcbb bccacb babb...
output:
23 3036 159 187 11472 909 2 257 173 96 1070 21215 459 920 2680 7901 17396 513 3992 1460 31684 4245 2...
result:
ok 100000 lines
Extra Test:
score: 0
Extra Test Passed