
Trie
文章平均质量分 80
詹明捷
此博客停止更新,迁移至www.zhanmingjie.com
展开
-
单词拆解&前缀树&树上DP LA 3942 Remember the Word
给定一些单词,和一个长串,问这个长串拆分成已有单词,能拆分成几种方式原创 2015-08-17 16:37:39 · 1409 阅读 · 0 评论 -
求公共前缀长度与所选字符串个数的乘积的最大值 Trie树求最值 UVA 11488 Hyper Prefix Sets
题目大意:白书练习题给定一个字符串集合S, 定义P(S)为所有字符串的公共前缀长度与S中字符串个数的乘积, 例如P{000, 001, 0011} = 6,现在给出n个只包含字符01的串(n 大致思路:这题比较巧妙, 刚开始是凭感觉写的, 结果一发AC了...后来证明了一下正确性我的想法就是对n个字符串插入Trie树的时候, 每插入一个节原创 2015-09-24 16:00:56 · 851 阅读 · 0 评论 -
找出s的子串中字典序第k小的“半回文串” Trie Codeforce Div. 2 Ann and Half-Palindrome
题意找出s的子串中字典序第k小的“半回文串”,给出半回文串定义是:对于任意i思路这用dp推下就可以了,dp[i][j]表从i到j是否是回文串 则dp[i][j] = dp[i+2][j-2](j-i>=4),其他的都是奇回文串; 要输出第k个字典序的子串,首先肯定想到要用字典树输出来就是了,很简单的dfs就可以了。插入串的时候,就不要一个一个插了,而直接插一个后缀就可以了这样总原创 2015-10-07 18:18:49 · 1227 阅读 · 0 评论 -
左儿子右兄弟Trie UVA 11732 strcmp() Anyone?
UVA 11732 strcmp() Anyone?(左儿子右兄弟Trie)ACM题目地址: UVA 11732 strcmp() Anyone?题意: 问strcmp函数的==语句执行了几次。UVA 11732 strcmp() Anyone?(左儿子右兄弟Trie)ACM题目地址: UVA 11732 strcmp() A原创 2015-08-17 23:35:01 · 1574 阅读 · 0 评论 -
连续子串最大最小异或值 Trie+Xor LightOJ 1269 Consecutive Sum
http://lightoj.com/volume_showproblem.php?problem=1269题意:给定一个序列,求选定一段区间的亦或和最大值和最小值。解析:由于是区间问题,很容易就能想到是要先求前缀异或和。 可以对所有前缀和建立字典树,节点的末尾保存二进制转化成十进制的值。 先查询,再插入。 可以先将所有的的数字转化成二进制字符串,高位在前,原创 2015-10-02 22:45:37 · 2578 阅读 · 0 评论 -
’?’&&’*‘多对多代替字符匹配 Trie POJ 1816 Wild Words
http://poj.org/problem?id=1816题意:给出n个模式串,串中除开小写字母外,’?’代表一个字符,’*’代表可空的任意字符串,然后再给出m个字符串,问有多少个模式串可以与之匹配。解析:可以通过模式串建立字典树,接着根据字符串去dfs就行了。 需要注意的就是遇到当前节点为*则还可以继续走当前结点,每次dfs要么字典树匹配深度加1,要么字符串位置原创 2015-10-01 22:32:00 · 679 阅读 · 0 评论 -
短信智能输入 Trie POJ 1451 T9
http://poj.org/problem?id=1451背景:为了方便九宫格手机用户发短信,希望在用户按键时,根据提供的字典(给出字符串和频数),给出各个阶段最有可能要打的单词。题意:首先给出的是字典,每个单词有一个出现频率。然后给出的是询问,每个询问有一个数字字符串,代表在手机上按了哪些键,以1结束。问按键的过程中最可能出现的单词分别是哪些。注意:hell的权值为原创 2015-10-01 21:26:59 · 642 阅读 · 0 评论 -
连单词成欧拉路 欧拉回路+字典树+并查集 POJ 2513 Colored Sticks
http://poj.org/problem?id=2513题意:给你很多对单词,单词相当于一个点,一对单词相当于一条边,问这么多对的单词能否组成一条欧拉路,要求每条边都要经过。解析:题目数据很大,每个单词最多10个字母,据说用map映射会TLE。 所有要改用字典树进行hash。 判断欧拉路径或者回路需要满足两个条件。 图上所有点联通 度数为奇数个的节点原创 2015-10-02 15:56:27 · 743 阅读 · 0 评论 -
fjut 1107 第八集 你明明自己也生病了,却还是要陪着我(字典树)
题意:首先要写一个添加字符串操作,比如说我输入“1 abc”就是添加字符串abc。然后写查询城市名称操作比如说我输入“2 abcabc”就是查询abcabc是否是所有添加过的字符串中前后缀组合(或本身就是某单词的前缀或后缀),输出“YES”或“NO”。 字符串不会超过100个字符!操作总数不超过50000个。解析:利用Trie构建两个字典树,前缀树和后缀树,先将字符原创 2015-09-30 16:03:06 · 469 阅读 · 0 评论 -
字符串依据元素分组 Trie+hash POJ 2408 Anagram Groups
http://poj.org/problem?id=2408题意:给定若干个字符串,将其分组,按照组成元素相同为一组,输出数量最多的前5组,每组按照字典序输出所。 有字符串。数量相同的输出字典序较小的一组。注意:每个输出时每个字符串只能出现一次。解析:可以先将所有的字符串利用字典树hash,并利用vector进行保存。 然后对vector进行标号原创 2015-10-01 23:39:33 · 851 阅读 · 0 评论 -
找出能唯一标示一个字符串的最短前缀 Trie POJ 2001 Shortest Prefixes
题意:找出能唯一标示一个字符串的最短前缀。解析:Trie树。val表示有多少个单词节点。先将所有单词保存在Trie树中,然后一个一个地查找,当到达某个节点时val==1。表示到当前位置只有一条路,那么从根到该节点组成的字符串便是该单词的最短前缀。总结:RE了一个下午,才知道,遍历字符串的时候要先求出字符串的长度,然后根据这个长度进行遍历,而我之前是用指针偏移来做的,这样可能原创 2015-09-29 21:06:07 · 2143 阅读 · 0 评论 -
翻译单词 Trie POJ 2503 Babelfish
http://poj.org/problem?id=2503题意:输入一个字典,字典格式为“英语 外语”的一一映射关系 然后输入若干个外语单词,输出他们的 英语翻译单词,如果字典中不存在这个单词,则输出“eh”解析:对于所有给定的单词建立一颗字典树,然后对于每次给出的单词用字典树进行查询。#include #include #include u原创 2015-09-29 20:49:09 · 764 阅读 · 0 评论 -
判断是否为其他字符串的前缀 Trie hdu 1671 phone list
http://acm.hdu.edu.cn/showproblem.php?pid=1671题意:判断输入的电话号码的前缀,是否是其他电话号码,如果是其他号码就输出NO,否则输出YES。解析:这题的思路很简单,直接利用Trie树求解。 先把所有的电话号码从1到n进行标号,并插入Trie树中,然后利用Trie树查找每个电话号码,如果在查找的过程中遇到val != 0就re原创 2015-09-29 21:59:15 · 724 阅读 · 0 评论 -
多对多LCP和最大 Trie DFS CodeForces - 566A Matching Names
题意:有n个学生在学校,他们有n个真名,以及n个假名。 求如何真名和假名,匹配使得LCP和最大。解析:先给真名和假名标号,然后插入到字典树上。 一颗字典树上面的每个节点,保存的是每个字符串前缀的编号。 然后对字典树进行dfs,然后优先选择深的匹配,并标记。 然后回溯匹配,被标记过的不要。#include #include #include原创 2015-09-29 19:55:31 · 845 阅读 · 0 评论 -
两段异或和的最大值 二进制TRIE图表达式 XOR CodeChef Nikitosh and xor
找出下面式子的最大值:(A[l1] ⊕ A[l1 + 1] ⊕ · · · ⊕ A[r1]) + (A[l2] ⊕ A[l2 + 1] ⊕ · · · ⊕ A[r2])其中,1 ≤ l1 ≤ r1 < l2 ≤ r2 ≤ N。式中 x ⊕ y 表示 x 和 y 的 按位异或原创 2015-09-22 16:23:51 · 1194 阅读 · 0 评论