简单字典树题目总结

转自:http://hi.baidu.com/matrush/archive/tag/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84

关于字典树请见:字典树[Trie],以下是我最近做的一些关于字典树的题目,来源是HDU的一些经典题。

HDU1251-统计难题:最简单的字典树题,对于字典中的字符串插入后依次回答询问子串个数即可,模板即为此题。

HDU1305-Immediate Decodability:这题要求的是对于一个字典是否满足其中任何一个字符串都不是另一个字符串的子串,所以插入所有串后枚举每个串,看是否所有的串都符合子串个数为1(自身是自身的子串)即可。

HDU1671-Phone List:同上一题一样,不过因为有多组数据所以要用静态来存,不然会超空间。

HDU2072-单词数:直接map亦可,练字典树的话也就是套模板,插入时看看是否本身isword,不是则ans++即可。

HDU1075-What Are You Talking About:这题就是翻译文章,所以把所有译文存到数组中,对每个单词插入进字典树,并在结点上增加译文在数组中位置的信息,输出时只需查找单词,若存在则输出译文,否组输出原文即可。

HDU1247-Hat’s Words:用字典树插入所有单词后直接枚举每个单词的每个分割点,看分成的两个字符串是否都存在即可。

HDU1298-T9:题意是类似模拟实现手机上的智能输入法,询问每个按键后首选词是什么,方法可以把所有单次插入字典树后再dfs,也可以用两棵字典树,一棵插入单词的同时向另一棵数字字典树更新概率以及首选词位置即可。

有道难题2010网易编程挑战赛资格赛(1)B:有道搜索框:题意为模拟一个搜索框,输入某个单词后输出以该单词为前缀的前8个(或小于8个)单词。所以将所有单词插入字典树后dfs询问的前缀,再从前缀开始dfs得出前8个单词即可。

posted @ 2012-09-04 16:44  max_xbw  阅读(583)  评论(0编辑  收藏  举报