随笔分类 -  -----其他算法 3.树的分治

摘要:题目链接:hdu_4918_Query on the subtree 题意: 给出一颗n个点的树,每个点有一个权值,有两种操作,一种是将某个点的权值修改为v,另一种是查询距离点u不超过d的点的权值和。 题解: 这里可以去膜膜鸟神的博客。 简单来说就是对树的每个重心建立两个树状数组,然后对于每个点修改 阅读全文
posted @ 2016-12-02 13:25 bin_gege 阅读(584) 评论(0) 推荐(0)
摘要:题意: 给你一个有n个点的树,给定根,叫你找第k大的特殊链 。特殊的链的定义:u,v之间的路径,经过题给的根节点. 题解:(来自BC官方题解) 对于求第k大的问题,我们可以通过在外层套一个二分,将其转化为求不小于mid的有多少个的问题。 接下来我们讨论如何求树上有多少条折链的长度不小于k。 我们考虑 阅读全文
posted @ 2016-11-28 21:34 bin_gege 阅读(381) 评论(0) 推荐(0)
摘要:题目链接:hdu_5314_Happy King 题意: 给出一颗n个结点的树,点上有权值; 求点对(x,y)满足x!=y且x到y的路径上最大值与最小值的差<=D; 题解: 还是树的点分治,在统计答案的时候先按到根的最小值排序,然后用最大值减D去找有多少个满足答案。 1 #include<bits/ 阅读全文
posted @ 2016-11-17 21:50 bin_gege 阅读(515) 评论(0) 推荐(0)
摘要:题目链接:poj1741_Tree 题意: 给你一颗n个节点的树,每条边有一个值,问有多少点对(u,v),满足u->v的最短路径小于k。 题解: 典型的树的分治,板子题。 1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring> 4 # 阅读全文
posted @ 2016-11-16 14:45 bin_gege 阅读(182) 评论(0) 推荐(0)