随笔分类 -  图论之lca

摘要:题意:给一个字符串,多组查询,一些后缀两两的lcp长度和,查询个数和不超过1e6 题解:svt就是后缀虚树,suffix virtual tree,考虑后缀树lca求lcp长度,但是查询次数可能很多,不能每次遍历,所以要建出虚数后在虚树上dp,对于一个节点考虑算贡献,对于所有子树,两两算个数乘积乘上 阅读全文
posted @ 2018-11-02 17:25 walfy 阅读(196) 评论(0) 推荐(0)
摘要:题意:一棵树q次查询,每次查询给三个不同的点,要求计算到这三个点的比其他两个距离都要小的点数 题解:很明显的lca,倍增的找中点,关键是两个点的中点很好找,但是三个点不好找,我刚开始还准备分类讨论,后来发现巨麻烦,其实可以用线段树来维护算a的答案其实就是a在b下的答案和a在c下的答案的交集,可以用线 阅读全文
posted @ 2018-05-09 13:47 walfy 阅读(183) 评论(0) 推荐(0)
摘要:http://codeforces.com/contest/733/problem/F 题意:给你一些城市和一些路,每条路有不满意程度和每减少一点不满意程度的花费,给出最大花费,要求找出花费小于s的最小生成树中最小的不满意程度 题解:首先明确的是肯定只删除一条路然后其他的找最小生成树即可,但是直接搞 阅读全文
posted @ 2018-04-22 01:15 walfy 阅读(133) 评论(0) 推荐(0)
摘要:求距离 #include<map> #include<set> #include<cmath> #include<queue> #include<stack> #include<vector> #include<cstdio> #include<cassert> #include<iomanip> 阅读全文
posted @ 2017-07-28 14:05 walfy 阅读(482) 评论(0) 推荐(0)
摘要:求三点之间的最短路,,分别求两点之间的lca除2即可(代码写的太挫了,wa了14发= =) #include<map> #include<set> #include<cmath> #include<queue> #include<stack> #include<vector> #include<cs 阅读全文
posted @ 2017-07-28 12:38 walfy 阅读(154) 评论(0) 推荐(0)
摘要:lca求距离,带权值 的树上求lca,我是用倍增法求的,求两点之间的距离转化为到根节点之间的距离 (de了一个小时 的bug,重打居然就过了。。。。) #include<map> #include<set> #include<cmath> #include<queue> #include<stack 阅读全文
posted @ 2017-07-27 19:40 walfy 阅读(349) 评论(0) 推荐(0)
摘要:直接套模板,dfs的时候注意起点 #include<map> #include<set> #include<cmath> #include<queue> #include<stack> #include<vector> #include<cstdio> #include<cassert> #incl 阅读全文
posted @ 2017-07-27 16:33 walfy 阅读(219) 评论(0) 推荐(0)
摘要:A超级水,三分钟1a #include<map> #include<set> #include<cmath> #include<queue> #include<stack> #include<vector> #include<cstdio> #include<cassert> #include<io 阅读全文
posted @ 2017-07-26 12:34 walfy 阅读(121) 评论(0) 推荐(0)