码迷,mamicode.com
首页 >  
搜索关键字:lca    ( 2392个结果
POJ 3728 离线 LCA
题意很简单 给一个树(n 若干个询问(5w) 对每个询问,问的是从u点走到v点(简单路径),商人在这个路径中的某点买入商品,然后在某点再卖出商品,   最大可能是多少 注意一条路径上只能买卖一次,先买才能卖 用的方法是离线LCA,在上面加了一些东西 对于一个询问, 假设u,v的LCA是f 那么有三种可能, 一个是从u到f 买卖了。 一个是从f到v买卖了,  一个是从...
分类:其他好文   时间:2015-01-22 01:45:47    阅读次数:247
算法模板——LCA(最近公共祖先)
实现的功能如下——在一个N个点的无环图中,共有N-1条边,M个访问中每次询问两个点的距离原理——既然N个点,N-1条边,则说明这是一棵树,而且联通。所以以1为根节点DFS建树,然后通过求两点的LCA的方式,先求得最近公共祖先,然后再通过深度来求出两点距离 1 type 2 point=^...
分类:编程语言   时间:2015-01-20 00:53:40    阅读次数:324
BZOJ 3879 SvT 后缀树+虚树
题目大意:给出一个字符串,给出一些询问,每次问几个后缀两两之间的LCP之和。 思路:保证Σask数量级在O(n)上,可以考虑一下虚树了。建立虚树之后,这题就和差异那个题一样了。但是必须要打时间戳啊,要不死的很惨的啊。。 CODE: #include #include #include #include #define MAX 1000010 using names...
分类:其他好文   时间:2015-01-19 19:12:37    阅读次数:151
BZOJ2286: [Sdoi2011]消耗战
题解:又是一个大坑。。。算法一:很明显,最小割。预计得分20分。算法二:每次做一遍树DP,预计得分40分。算法三:虚树+单调栈。算法三是为了优化算法二而出现的,因为关键点很少,而我们每次都要dfs整棵树过于浪费。而我们只把关键点和它们的lca拎出来。使得每个点要不是关键点,要不是lca用来汇总答案。...
分类:其他好文   时间:2015-01-17 23:25:42    阅读次数:343
BZOJ 3238 AHOI 2013 差异 后缀树
题目大意:求所有后缀长度减去LCP长度的二倍。 思路:之前用后缀数组写过,但是做法并不是很直观。现在学了后缀树再来写一次,这次思路就很清晰了。 首先我们把字符串按照倒序插入到后缀树中。形成的后缀树有一个很好的性质,连个后缀节点的LCA就是这两个后缀的LCP的位置,LCA的len值自然就是两个后缀的LCP。 建好树之后,进行一次树形DP,统计出来每两个后缀的LCP长度,计入总答案。 ...
分类:其他好文   时间:2015-01-17 18:06:18    阅读次数:221
[BZOJ 3626] [LNOI2014] LCA 【树链剖分 + 离线 + 差分询问】
题目链接: BZOJ - 3626题目分析考虑这样的等价问题,如果我们把一个点 x 到 Root 的路径上每个点的权值赋为 1 ,其余点的权值为 0,那么从 LCA(x, y) 的 Depth 就是从 y 到 Root 的路径上的点权和。这个方法是可以叠加的,这是非常有用的一点。如果我们把 [l, ...
分类:其他好文   时间:2015-01-16 18:49:42    阅读次数:190
【BZOJ3238】【Ahoi2013】差异 后缀自动机
首先 秦神QY Orz  题解: 这道题后缀数组过于鬼畜(wo’tai’ruo’bu’gan’xie) 所以写了简单好写易于理解不用分治不用RMQ的SAM大叔。 题解: 首先其实我们需要一个后缀树,然后两个后缀的lcp就是它们lca的len。 后缀树可以通过反序后缀自动机得到,这个很水。 然后len的性质就是后缀自动机的那个len(我写的‘deep’)。 后缀树上DP就水了...
分类:其他好文   时间:2015-01-15 09:27:52    阅读次数:199
【BZOJ1832】【AHOI2008】聚会 倍增lca
这道题写不了tarjanlca。 50W的询问,也就是150W次lca查询,每次加三条边,内存妥妥要爆。 只能退求logn的倍增lca了。 sad story. 还好一遍AC。 题解: 就是发现每次询问三个点之间有唯一的路径集,那么我们选其中两个取lca,然后另一个点自己走到这个lca, 就可以贪心取得答案。 代码: #include #include #inc...
分类:其他好文   时间:2015-01-11 11:06:17    阅读次数:172
BZOJ 3611 HEOI 2014 大工程 LCA单调性
题目大意:给出一棵树,每次询问一些节点,当把这些节点连接起来,使得每两个询问的点之间有一条边,共有k*(k - 1)条边。问这些边中,长度的总和是多少,最短的一条边是多少,最长的一条边是多少。保证询问的点的总数是O(n)级别。 思路:利用LCA单调性,每次询问的时候重新建树,在这棵树上做DP,使得总体时间复杂度降到O(nlogn)。 树形DP我写的都要麻烦死了。。听了正解之后简直想吐血...
分类:其他好文   时间:2015-01-09 17:34:40    阅读次数:274
【BZOJ2286】【SDOI2011】消耗战 LCA单调性(构建虚树)+树形DP
题解: 首先我们考虑每次都做一遍树形DP(树形DP自己脑补去,随便乱搞就过了)。 显然这是TLE无疑的。 所以可以利用LCA单调性构建虚树。 思想: 我们发现每次树形DP有很多点用不到,但是却需要被扫过,让他们见鬼去吧! 实现: 我们只对每次扫的图插入本次询问需要的节点,以及它们的LCA。 这样询问了m个点,虚树就至多只需要2m个点(so quick)。 而插入顺...
分类:其他好文   时间:2015-01-09 17:30:49    阅读次数:165
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!