随笔分类 -  ACM_数据结构

摘要:题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3065思路分析:问题需要模式匹配多个模式串,需要注意的是模式串会包含和重叠,需要对AC自动机的匹配过程进行修改,对于每个节点,需要从该节点的失败指针回溯,如果失败指针回溯后的节点为某个模式串的最后一个节... 阅读全文
posted @ 2015-07-22 00:17 Leptus 阅读(214) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2896思路分析:题目为模式匹配问题,对于一个给定的字符串,判断能匹配多少个模式;该问题需要静态建树,另外需要对AC自动机的模板加以修改,对于每个匹配的模式的最后一个单词的fail指针指向root,即可实现... 阅读全文
posted @ 2015-07-21 23:15 Leptus 阅读(227) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1251思路分析:该问题要求求出以某个字符串为前缀的单词数目,通过使用字典树,在字典树中添加count记录通过该结点的单词数目即可;查找时找到前缀的最后一个单词的结点的count值即为所求;代码如下:#in... 阅读全文
posted @ 2015-07-20 23:10 Leptus 阅读(137) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1247思路分析:题目要求找出在输入字符串中的满足要求(该字符串由输入的字符串中的两个字符串拼接而成)的字符串。对于长度为LEN的字符串,其可能由LEN种可能的拼接可能;现在问题转化为查找能够拼接成该字符串... 阅读全文
posted @ 2015-07-20 21:00 Leptus 阅读(149) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=1204思路分析:由于题目数据较弱,使用暴力搜索;对于所有查找的单词建立一棵字典树,在图中的每个坐标,往8个方向搜索查找即可;需要注意的是查找时不能匹配了一个单词就不在继续往该方向查找,因为在某个坐标的某个方向上可能会匹配多个单词,所以需... 阅读全文
posted @ 2015-07-19 23:15 Leptus 阅读(250) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1166思路分析:该问题为动态连续和查询问题,使用数组数组可以解决;也可使用线段树解决该问题;代码如下:#include #include #include using namespace std;cons... 阅读全文
posted @ 2015-07-18 20:43 Leptus 阅读(207) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2222思路分析:该问题为多模式匹配问题,使用AC自动机解决;需要注意的问题是如何统计该待查询的字符串包含的关键字:假设待查找的字符串为str[0..n],则str[i…j]可能为某一个关键字;假设当前正在... 阅读全文
posted @ 2015-07-17 23:17 Leptus 阅读(270) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5249思路分析:使用queue记录管道中的值并使用treap能够查询第K大的功能查询第floor(m/2)+1大的数值;对于in value操作,将value插入queue中和treap中;对于out操作... 阅读全文
posted @ 2015-06-17 20:28 Leptus 阅读(220) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5269思路分析:当lowbit(AxorB)=2p 时,表示A与B的二进制表示的0-p-1位相等,第p位不同;考虑维护一棵字母树,将所有数字转换为二进制形式并且从第0位开始插入树中,并在每个节点中记录通过... 阅读全文
posted @ 2015-06-16 07:44 Leptus 阅读(434) 评论(0) 推荐(1)
摘要:题目链接:http://poj.org/problem?id=2104题目分析:该问题给定一段区间中的值,再给定一段查询区间[ql, qr],需要给出该查询区间中的值在排序后的第K大的值;使用划分树即可解决该问题;划分树的建树的复杂度为O(NlogN),查询一个区间的第K大值的复杂度为O(logN)... 阅读全文
posted @ 2015-06-11 23:49 Leptus 阅读(162) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=2528思路分析:线段树处理区间覆盖问题,也可以看做每次给一段区间染不同的颜色,最后求在整段区间上含有的所有颜色种类数;注意由于区间太大,所以需要离散化;区间更新:对于线段树的每个结点,标记颜色,初始时没有颜色,标记为0;当更新时,使用延... 阅读全文
posted @ 2015-06-10 23:10 Leptus 阅读(164) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=2777思路分析:该问题为区间涂色问题,要求统计某一段区间上含有的颜色种类;使用线段树求解该问题,需要使用延迟标记方法;使用一个整型数据作为位图记录在这段区间上的颜色种类,如1001表示存在颜色1与颜色4;更新操作:更新时注意需要将标记下... 阅读全文
posted @ 2015-06-10 19:15 Leptus 阅读(197) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=3468思路分析:使用sumv[i]记录一段线段区间的目前的sum,addv[i]记录在整个过程中对某一段线段区间上的所有增加值的和;更新操作:将需要更新的区间分为多段不相交的区间,并在这些区间上更新该区间上增加的值,并修改这些区间的su... 阅读全文
posted @ 2015-06-09 23:55 Leptus 阅读(143) 评论(0) 推荐(0)
摘要:题目链接:http://acm.swjtu.edu.cn/JudgeOnline/showproblem?problem_id=2213思路分析:该问题与约瑟夫问题相似;每次将前n张牌放到队列的最后,可以将整个队列看做一个环,每次向前移动n步,则下一张牌的号码即被编号为n,并在该环中除去该牌,在继续... 阅读全文
posted @ 2015-04-26 21:56 Leptus 阅读(139) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=3264思路分析:典型的区间统计问题,要求求出某段区间中的极值,可以使用线段树求解。在线段树结点中存储区间中的最小值与最大值;查询时使用线段树的查询方法并稍加修改即可进行查询区间中最大与最小值的功能。代码(线段树解法):#include ... 阅读全文
posted @ 2015-02-03 19:16 Leptus 阅读(168) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=2153思路分析:判断Li Ming的成绩排名,需要在所有的数据章查找成绩比其高的人的数目,为查找问题。查找问题可以使用Hash表,STL中的Map,查找树,或者使用排序与二分查找即可。代码:#include #include #incl... 阅读全文
posted @ 2015-01-31 14:03 Leptus 阅读(221) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=2051思路分析:优先级问题,使用优先队列求解;当执行某个任务后,再增加一个任务到队列中,该任务的优先级为执行任务的时间加上其时间间隔,如此反复直到求出前K个执行任务。代码:#include #include using namespac... 阅读全文
posted @ 2015-01-30 21:55 Leptus 阅读(185) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=3630思路分析:求在字符串中是否存在某个字符串为另一字符串的前缀:即对于某个字符串而言,其是否为某个字符串的前缀,或存在某个其先前的字符串为其前缀;(1)若该字符串为某个字符串前缀,则存在一条从根节点到该字符串的最后一个字符串的路径;(... 阅读全文
posted @ 2015-01-30 20:18 Leptus 阅读(196) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=2001思路分析:在Trie结点中添加数据域childNum,表示以该字符串为前缀的字符数目;在创建结点时,路径上的所有除叶子节点以外的结点的childNum增加1,叶子结点的childNum设置为1;在查询某个结点的最短前缀时:(1)若... 阅读全文
posted @ 2015-01-30 19:03 Leptus 阅读(462) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/bbs?problem_id=2503思路分析:题目数据数据量为10^5, 为查找问题,使用Hash或Map等查找树可以解决,也可以使用字典树查找。代码(Map实现):#include #include #include #include using name... 阅读全文
posted @ 2015-01-30 13:28 Leptus 阅读(216) 评论(0) 推荐(0)