First!G

[USACO12DEC]First! G

考虑到跟单词的排名有关,先构建字典树。然后考虑枚举每个单词是否能作为字典序最小者。

首先如果有其他单词是这个单词的前缀的话,这个单词肯定不能作为答案。

其次,如果一个单词需要作为前缀的话,那么在第一层,这个单词的第一个字母必须为同层的单词中最小的。可以连一条有向边表示。以此类推,如果有单词第一个字母和它相同的,看第二层,但是需要注意看第二层的单词必须要求第一层和这个单词是一样的,不然比如 baab,那么不能说既要满足 b<a,又要满足 a<b。这样复杂度就很低了,用邻接表存图,建关系边(重复就不建立),跑拓扑排序验证是否有环。

代码

posted @ 2023-06-06 12:40  wscqwq  阅读(9)  评论(0编辑  收藏  举报