First!G
[USACO12DEC]First! G
考虑到跟单词的排名有关,先构建字典树。然后考虑枚举每个单词是否能作为字典序最小者。
首先如果有其他单词是这个单词的前缀的话,这个单词肯定不能作为答案。
其次,如果一个单词需要作为前缀的话,那么在第一层,这个单词的第一个字母必须为同层的单词中最小的。可以连一条有向边表示。以此类推,如果有单词第一个字母和它相同的,看第二层,但是需要注意看第二层的单词必须要求第一层和这个单词是一样的,不然比如 ba
、ab
,那么不能说既要满足 b<a
,又要满足 a<b
。这样复杂度就很低了,用邻接表存图,建关系边(重复就不建立),跑拓扑排序验证是否有环。