
数据结构 lca
文章平均质量分 87
Fsss_7
这个作者很懒,什么都没留下…
展开
-
Codeforces Round #343 (Div. 2)
链接:http://codeforces.com/contest/629 problemA:给你一个n*n的矩阵,矩阵每个格子要么为空要么为C,求有多少对满足条件的C,条件为这两个C在同一行或同一列。 分析:直接统计每一行和每一列的C的个数,然后k*(k-1)/2加入答案即可。O(n^2) 代码: #include #include #include #include #include #原创 2016-02-23 14:34:36 · 480 阅读 · 0 评论 -
bzoj3306: 树
链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3306 题意:中文题。 分析:因为题目要求查询子树中的最小值,很明显想到dfs序。但是还有一个操作:换根。这个问题看上去不好处理,但是其实自己画画图就能很好的将换根之后的情况进行处理了,假设当前询问x根为root,这是我们只要分类讨论:当x==root,return tr[1]。当lca(x原创 2016-04-06 16:50:54 · 536 阅读 · 0 评论 -
bzoj2588: Spoj 10628. Count on a tree
链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2588 题意:中文题。 分析:树上建可持久化线段树,从父亲那继承。查询的时候减去lca和lca的父亲两个前缀即可。详见代码。O(nlogn+mlogn) 代码: #include #include #include #include #include #include #include原创 2016-04-11 22:36:26 · 648 阅读 · 0 评论 -
bzoj3611: [Heoi2014]大工程
链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3611 题意:中文题。 分析:同消耗战是一类题,询问过多,但是关键节点少,那么我们先建虚树(最大2*max个节点),同消耗战建虚树。然后在树上跑一遍DP即可。O(max*logn) 代码: #include #include #include #include #include #inc原创 2016-04-11 20:56:18 · 523 阅读 · 0 评论 -
Codeforces Round #378 (Div. 2) F. Drivers Dissatisfaction
链接:http://codeforces.com/contest/733/problem/F 题意:给定n个点m条边的联通图和一个s,每条边有边权w和费用c(花费c可以使权值-1)。最多花费s求一棵权值最小的生成树。 分析:很容易想到如果确定了树,那么费用肯定是全部用在c最小的那条边上,这样肯定是最优的。也就是说我们只需要确定哪一条是那条花费s的边,我们先按w建一颗最小生成树,然后得到初始an原创 2016-11-15 13:59:36 · 538 阅读 · 0 评论