LCA
文章平均质量分 79
冷月残星
这个作者很懒,什么都没留下…
展开
-
KMP,LCA(XJT Love Strings,玲珑杯 Round#8 A lonlife 1079)
官方题解错的,手动无视“深度”以及“dep”就对了。一开始把前缀和后缀相同理解成了回文串,然后想到了用字典树+LCA,但是字典树太大了。。。然后就不会了。如果我理解正确的话,应该是能很容易想到KMP+LCA的。按照官方题解的说法,就是先对字符串求一下getfail,得到f[]数组,然后根据f[]数组对所有失配边各连一条边,就会形成一棵树。然后求两个前缀的最长公共前缀和最长公共后缀,就是原创 2017-01-14 21:49:36 · 277 阅读 · 0 评论 -
Kruskal,最小生成树,树链剖分,LCA(邦德,UVA 11354)
又是最小生成树+树链剖分的经典组合题。代码#include#define ls (now<<1)#define rs (ls|1)using namespace std;const int maxn = 50010;const int maxm = 100010;int n,m;vectorG[maxn];vectorW[maxn];int u[maxm],v[原创 2017-02-12 18:11:26 · 376 阅读 · 0 评论 -
lca的ST算法(在线)
学习了lca的ST算法。时间复杂度为O(mlogn)参考博客:http://blog.csdn.net/y990041769/article/details/40887469http://blog.csdn.net/liangzhaoyang1/article/details/52549822树上最短路公式:记dis[u]为根节点到u节点的距离。di原创 2017-05-14 10:41:40 · 539 阅读 · 0 评论 -
lca的tarjan算法(离线)
学习了lca的tarjan算法。参考博客:http://www.cnblogs.com/JVxie/p/4854719.htmlhttp://blog.csdn.net/ljd4305/article/details/11606865http://www.cnblogs.com/ylfdrib/archive/2010/11/03/1867901.html树上最原创 2017-05-14 10:12:42 · 443 阅读 · 0 评论 -
dfs序(HDU 5296,Annoying problem)
如果不好模拟,那么可以考虑计算出来。dfs序配合二分是树上常用的找特殊点的工具。时间戳的记录使得我们可以快速地找到满足范围限制的点。(夹在某两个时间之间的点)代码:#include#include#includeusing namespace std;typedef long long ll;const int maxn = 100010;const int max原创 2017-05-14 19:24:27 · 185 阅读 · 0 评论 -
lca(HDU 4718,The LCIS on the Tree)
http://acm.hdu.edu.cn/showproblem.php?pid=4718树上的RMQ可以用lca或者树链剖分来解决。对于单次询问:lca可以在O(logn)的时间内给出答案。而树链剖分,是O(logn*log(n/logn))=O(log2n-logn*loglogn),接近O(log2n),要慢一些,虽然没试,但感觉应该也OK的。代码原创 2017-04-25 17:54:49 · 335 阅读 · 0 评论 -
前缀和,LCA(CRB and Tree,HDU 5416)
首先要知道树上最短路公式(树上两点间距离公式):记dis[u]为根节点到u节点的距离。dist(u,v) = dis[u] + dis[v] - 2 * dis[lca(u, v)]如果距离的定义改为异或和。那么公式就改为dist(u,v) = dis[u] ^ dis[v]剩下的问题就比较好解决了。值得注意的是计算无序对的时候,有时原创 2017-07-23 09:49:42 · 307 阅读 · 0 评论