随笔分类 - 树——点分治
摘要:题目的意思是:给定一个点带颜色的树,两点之间的距离定义为路径上不同颜色的个数。求所有点对间的距离和。 做法有点分治,还有传说中的虚树DP,树上差分。 点分治法: 考虑每个点的贡献,可以发现一个点的子树大小就是这个点的贡献。那么,对于同一个根的另一个子树的一个点x,去掉x到根结点对应颜色的贡献,再加上
阅读全文
摘要:HDU - 5977 题意: 给定一颗树,问树上有多少节点对,节点对间包括了所有K种苹果。 思路: 点分治,对于每个节点记录从根节点到这个节点包含的所有情况,类似状压,因为K《=10。然后处理每个重根连着的点的值:直接枚举每个点,然后找出这个点对应的每个子集,累计和子集互补的个数。 枚举一个数的子集
阅读全文
摘要:2152: 聪聪可可 题意: 在一棵边带权的树中,问任取两个点,这两个点间的权值和是3的倍数的概率。 思路: 经典的点分治题目。 利用点分治在计算所有路径长度,把路径长度对3取模,用$t[0],t[1],t[2]$分别记录模为0、1、2的情况,那么显然答案就是$t[1]*t[2]*2+t[0]*t[
阅读全文
摘要:POJ-1741 题意: 对于带权的一棵树,求树中距离不超过k的点的对数。 思路: 点分治的裸题。 将这棵树分成很多小的树,分治求解。 #include <algorithm> #include <iterator> #include <iostream> #include <cstring> #i
阅读全文