数据结构
文章平均质量分 76
Andymion
这个作者很懒,什么都没留下…
展开
-
UVa 12219
题意大体是给定一个字符串,根据字符串建树,然后可以把树化简成一个图,最后根据图输出一行字符串 思路 映射 题目就是要求化简子树,使每一个子树都唯一存在,可以用一个三元组SubTree(root, l, r)代表整个子树,root是当前子树根的字符串, l是当前子树的左子树,r是当前子树的右子树,每次用map查询可以实现O(logn)的查询,建树的时候直接从左到右原创 2016-09-05 22:06:07 · 493 阅读 · 0 评论 -
UVa 1218
题目大意是给定一个树状结构,确定一些特殊的结点,使每一个普通节点之和一个特殊节点相邻,且求得的这些特殊节点的数量最少 其实就是最大独立集的翻版,想到状态也就不难推出状态转移方程了。 1、 d(u, 0) = sum { min(d (v, 0), d (v, 1) ) } + 1 2、 d(u, 1) = sum { d (v, 2) } 3、 d(u, 2) = min{ sum { d原创 2016-10-08 19:57:58 · 346 阅读 · 0 评论 -
URAL 1269
这个题断断续续写了一星期,借鉴了大神的思路,总算是把这个题A掉了。 题意就是在文本中找到第一个字典中的单词,很明显的AC自动机,但是卡内存和卡时间。 卡时间的话,网上有的自动机的模板是会超时的。不过大致算法是一样的,只是有个小细节要处理。 卡内存,网上大神的题解用了map,简单易懂,我为了最大限度的保存空间,用的结构体指针的形式,对于任意一个节点, 它的儿子节点都用map将int映射成一个原创 2016-11-04 01:22:12 · 445 阅读 · 0 评论 -
HDU 1506
题意是给定一定量的木板,长度不一,按顺序排成一排,问够成的图形中能容纳的最大的矩形面积是多少。 思路 dp / 单调栈 首先说dp的思路,因为对于每一个木板,我们都有一个高度,主要是看这个高度能够向左向右延伸多远。如果一个木板左边的 木板能够大于当前的木板,则当前的木板的高度就能延伸到左边的木板,依次类推,我们其实就是不断寻找左边木板最多能延伸 到哪,因为如果左边木板比当前木板的高度大的原创 2016-12-03 13:29:50 · 463 阅读 · 0 评论 -
URAL 2014
题目大意是一个人出国留学只用信用卡消费,会出现某天有金钱变化,这些都只会有两种情况,一种是挣钱,一种是花钱,如果钱不够就需要用信用卡透支。这些天还会像家里的父亲寄一封信来说明当天支出和收入。但是由于快递不行,所以到达父亲手里的信封的时间是乱序的,问每当收到一封信,父亲能推算的最大透支额度是多少。 思路: 线段树 先把时间离散化,然后对每一封信,用线段树更新当前天到最晚天的收支,最后用线段树维原创 2017-05-04 00:05:27 · 355 阅读 · 0 评论