JZOJ 5795. 2018.08.10【2018提高组】模拟A组&省选 词典

相当于相邻的非0之间的距离的最大值,边建立字典树边计算答案即可

 1 %:pragma GCC optimize(2)
 2 %:pragma GCC optimize(3)
 3 %:pragma GCC optimize("Ofast")
 4 %:pragma GCC optimize("inline")
 5 %:pragma GCC optimize("-fgcse")
 6 %:pragma GCC optimize("-fgcse-lm")
 7 %:pragma GCC optimize("-fipa-sra")
 8 %:pragma GCC optimize("-ftree-pre")
 9 %:pragma GCC optimize("-ftree-vrp")
10 %:pragma GCC optimize("-fpeephole2")
11 %:pragma GCC optimize("-ffast-math")
12 %:pragma GCC optimize("-fsched-spec")
13 %:pragma GCC optimize("unroll-loops")
14 %:pragma GCC optimize("-falign-jumps")
15 %:pragma GCC optimize("-falign-loops")
16 %:pragma GCC optimize("-falign-labels")
17 %:pragma GCC optimize("-fdevirtualize")
18 %:pragma GCC optimize("-fcaller-saves")
19 %:pragma GCC optimize("-fcrossjumping")
20 %:pragma GCC optimize("-fthread-jumps")
21 %:pragma GCC optimize("-funroll-loops")
22 %:pragma GCC optimize("-fwhole-program")
23 %:pragma GCC optimize("-freorder-blocks")
24 %:pragma GCC optimize("-fschedule-insns")
25 %:pragma GCC optimize("inline-functions")
26 %:pragma GCC optimize("-ftree-tail-merge")
27 %:pragma GCC optimize("-fschedule-insns2")
28 %:pragma GCC optimize("-fstrict-aliasing")
29 %:pragma GCC optimize("-fstrict-overflow")
30 %:pragma GCC optimize("-falign-functions")
31 %:pragma GCC optimize("-fcse-skip-blocks")
32 %:pragma GCC optimize("-fcse-follow-jumps")
33 %:pragma GCC optimize("-fsched-interblock")
34 %:pragma GCC optimize("-fpartial-inlining")
35 %:pragma GCC optimize("no-stack-protector")
36 %:pragma GCC optimize("-freorder-functions")
37 %:pragma GCC optimize("-findirect-inlining")
38 %:pragma GCC optimize("-fhoist-adjacent-loads")
39 %:pragma GCC optimize("-frerun-cse-after-loop")
40 %:pragma GCC optimize("inline-small-functions")
41 %:pragma GCC optimize("-finline-small-functions")
42 %:pragma GCC optimize("-ftree-switch-conversion")
43 %:pragma GCC optimize("-foptimize-sibling-calls")
44 %:pragma GCC optimize("-fexpensive-optimizations")
45 %:pragma GCC optimize("-funsafe-loop-optimizations")
46 %:pragma GCC optimize("inline-functions-called-once")
47 %:pragma GCC optimize("-fdelete-null-pointer-checks")
48 
49 #include <bits/stdc++.h>
50 using namespace std;
51 const int N = 5e6 + 10;
52 int n, m;
53 char T[N], S[N];
54 
55 int ch[N][3], root = 1, tot = 1, ans[N * 3], last[N * 3];
56 
57 void ins(int fafa) {
58     int x = root;
59     for(int i = 1 ; T[i] ; ++ i) {
60         int c = T[i] - 'a';
61         if(!ch[x][c]) ch[x][c] = ++ tot;
62         x = ch[x][c];
63         if(last[x] == 0) ans[x] = max(ans[x], fafa);
64         else ans[x] = max(ans[x], fafa - last[x] - 1);
65         last[x] = fafa;
66     }
67 }
68 
69 int main() {
70     freopen("word.in", "r", stdin);
71     freopen("word.out", "w", stdout);
72     scanf("%d%d", &n, &m);
73     for(int i = 1 ; i <= n ; ++ i) scanf("%s", T + 1), ins(i);
74     for(int i = 1 ; i <= tot ; ++ i) {
75         if(last[i]) {
76             ans[i] = max(ans[i], n - last[i]);
77         }
78     }
79     ans[0] = n;
80     for(int i = 1 ; i <= m ; ++ i) {
81         scanf("%s", S + 1);
82         int x = root;
83         for(int j = 1 ; S[j] ; ++ j) {
84             int c = S[j] - 'a';
85             x = ch[x][c];
86         }
87         printf("%d\n", ans[x]);
88     }
89 }
JZOJ 5795. 2018.08.10【2018提高组】模拟A组&省选 词典
posted @ 2018-08-10 12:23  KingSann  阅读(123)  评论(0编辑  收藏  举报