對於字串s1和s2,當s1的前|s2|個字元和s2相同時,那麼s2是s1的字首(|s2|表示字串s2的長度)。現在小zc有n個串,我們定義正確的字首s:在這n個串中有不超過5個串以s為字首。我們定義最短正確字首s:s是乙個正確字首,並且s的所有字首(不包括s)都不是正確字首。現在小zc想要知道在這n個串中最短正確字首的數量。
第一行乙個正整數t(t<=10),代表t組測試用例。
對於每組測試用例,第一行乙個正整數n(n<=10000),代表字串的數量。
之後n行每行包含乙個字串,每個字串只包含小寫字母'a'-'z'。
所有字串的總長度不超過2000000。
輸入可能包含相同的字串,你可以認為它們是不同的。
輸出最短正確字首的數量
22ab
ab6aab
abcabcd
abcde
abcdef
1
1
對於第乙個樣例,"a"是最短正確字首
對於第二個樣例,"ab"是最短正確字首
空字串""不應當被當作是最短正確字首
題解:字典樹+dfs
#includeusing namespace std;
const int maxn=1000010;
int ans;
char s[maxn];
struct node
}*root;
void insert(char*s)
now=now->nxt[to];
}now->num++;
now->flag=1;
}void dfs(node*cur)
for(int i=0;i<26;i++)
}int main()
return 0;
}
字典樹學習
字典樹差不多長這樣 核心就是利用了公共字首儲存出現過的單詞。例如,這棵樹的左半部分就記錄了三個單詞 ogday ogdfra ogdftq 他們有共同的字首ogd include include include include include include include include incl...
字典樹學習總結
解決問題 主要應對多次查詢,典例就是字典,字典樹就是一本字典,字典的最大好處就是能快速查詢 主要原理 我們在查某乙個單詞時總會先索引第乙個字母,然後在查第二個字母,以此類推直到查到此單詞為止,那麼字典樹的查詢過程也是如此,先查第乙個字母的節點位置,然後在該節點的子節點之中查詢第二個字母的位置,以此類...
字典樹學習總結
字串的多模匹配,kmp,字典樹,ac自動機,現在學習字典樹 字典樹又稱為單詞查詢樹,用於統計,排序和儲存大量的字串 但不僅限於字串 所以經常被搜尋引擎系統用於文字詞頻的統計。優點是利用字串的公共字首來減少查詢時間,最大限度減少無畏字串比較,查詢效率比雜湊樹高。其實字典樹就是dfa!每層是乙個狀態,只...