
trie树
Noooooorth
能够放弃的东西从来都不叫梦想
展开
-
HDU 4825 Xor Sum(trie树+贪心)
根据异或的性质(相同得0,不同得1),如果要使得异或的值最大,那么s与k转化为二进制后要有尽量多的高位不同。这里用到了贪心的思想,我们优先考虑高位,使得高位相反,其次再考虑低位,这样才能使得异或的值最大。同时题目给出的内存比较大,然后就可以用trie树了。我们要建一个32层的二叉树,每一层的节点的两个子节点分别表示0和1,每次查询从高到低依次走相反的路径。原创 2015-08-15 23:25:58 · 1829 阅读 · 0 评论 -
HDU 1247 Hat’s Words(trie树+STL)
首先用map标记字符串是否出现过,然后按照长度从小到大排序。然后我们就可以从小到大将字符串加入到trie树中,当 遇到节点不存在的情况,就把从这一位开始的字符串取出,判断这些字符串是否存在。 举个栗子:a,hat,ahat这3个字符串,首先将a和hat放入trie树中。然后将ahat放入trie树中,当要放入h时,我们发现 ah这个前缀不存在,所以我们要把h作为一个字符串存起来,之后每放入一个字符,我们就更新所有的字符串,最终形参 了hat这个字符串,经过预处理map["hat"]已经等于1,即已经存原创 2015-08-15 23:22:33 · 2045 阅读 · 0 评论 -
NBUT 1222 English Game(trie树+DP)
给出一个目标字符串和n个字符串及其对应的权值,求用这些字符串中的1个或多个组成目标字符串的最大权值。原创 2015-08-19 09:46:29 · 2151 阅读 · 0 评论