[codevs 1306]广播操的游戏(Trie)

时间:2023-03-09 20:45:19
[codevs 1306]广播操的游戏(Trie)

题目:http://codevs.cn/problem/1306/

分析:题意一看就知道就是要求Trie有多少个节点。但是如果每次单独取原串的所有子串加入Trie会超时,为什么呢?比方说AAABBBCCC,假设这样的一些串,A,AB,ABB,ABBB,ABBBC,ABBBCC,ABBBCCC,如果单独加入,那么它们的前缀都要重新查找,很浪费时间。考虑子串[l,r]和[l,r+1],完全可以在弄完[l,r]后继续第r+1个字符,就弄完了[l,r+1]。

具体的,按一定的顺序取子串:

[1,1] [1,2] [1,3]……[1,n]

[2,2] [2,3] ……

[3,3]……

就可以了