搬运:题意传送门:http://caioj.cn/problem.php?id=1433 前几天跟波* * * *老师一起搞这题,结果最后莫名其妙的被波老师D飞。。。 我用到的是动态点分治。 动态点分治就是基于树的重心(一棵树中,以重心为根的最大子树的节点最小)上的解法,该解法将一棵树分成若干棵子树 ...
分类:
其他好文 时间:
2017-09-21 21:08:53
阅读次数:
224
Description Last years Chicago was full of gangster fights and strange murders. The chief of the police got really tired of all these crimes, and deci ...
分类:
其他好文 时间:
2017-09-18 10:55:43
阅读次数:
219
题目大意: 给你一棵带权树,求出树中距离$\leq k$的点对个数。 思路: 运用树上分治的思想,每次找出树的重心,考虑以下三种情况: 1.两个结点在不同子树内,且距离$\leq k$,则算入答案中; 2.两个结点距离$\leq k$,但属于同一棵子树中,需要被算入答案中,但考虑到以后会被子树的重心 ...
分类:
其他好文 时间:
2017-09-03 20:14:11
阅读次数:
148
题意:求树的重心 解题关键:想树的结构,删去某个点后只剩下它的子树和原树-此树所形成的数,然后第一次dp求每个子树的节点个数,第二次dp求解答案即可。 此题一开始一直T,后来加了输入挂才过,第一次见卡cin+关同步的题目。 用scanf试了一下,也可以过,5s,看来cin关同步和scanf差距也是蛮 ...
分类:
其他好文 时间:
2017-08-23 19:04:36
阅读次数:
148
【BZOJ3162】独钓寒江雪 题解:先进行树hash,方法是找重心,如果重心有两个,则新建一个虚点将两个重心连起来,新点即为新树的重心。将重心当做根进行hash,hash函数不能太简单,我的方法是:将x的所有儿子的hash值排序,然后将这些hash值立方合在一起作为x的hash值。 进行完树has ...
分类:
其他好文 时间:
2017-08-18 20:07:16
阅读次数:
117
树的重心:对于一棵n个结点的无根树,找到一个点,使得把树变成以该点为根的有根树树时,最大子树的结点数最小。关于重心的求法见《算法竞赛入门经典第二版》281页 下面来看两个基础的题目: 链接 分析:求出树的重心以及最大子树的结点数 1 #include "iostream" 2 #include "c ...
分类:
其他好文 时间:
2017-08-17 14:32:27
阅读次数:
156
题目地址:POJ 1655 树的重心定义为:找到一个点,其全部的子树中最大的子树节点数最少,那么这个点就是这棵树的重心,删去重心后,生成的多棵树尽可能平衡. 树的重心能够用树形DP高速的找出来。 代码例如以下: #include <iostream> #include <string.h> #inc ...
分类:
其他好文 时间:
2017-08-14 10:20:20
阅读次数:
115
树形DP 求树的重心,即选择一个结点删去,使得分出的 若干棵树的结点数 的最大值最小 ...
分类:
其他好文 时间:
2017-08-11 10:06:48
阅读次数:
124
题意:给定一棵树,然后给定每条边的权值,问你有多少个点对满足路径的权和小于等于m。 析:直接枚举是肯定不行的,会TLE,利用分治的思想,我们可以把树按重心分成几部分,那么答案就是所有子树的点对都经过重心的,对于所有的子树的重心也是这样,对于经过重心的,可以先求出每个点都重心的距离,再排序,利用单调性 ...
分类:
其他好文 时间:
2017-08-04 14:28:22
阅读次数:
171
Balancing Act Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 14251 Accepted: 6027 Description Consider a tree T with N (1 <= N <= 20,000) ...
分类:
其他好文 时间:
2017-08-03 13:41:50
阅读次数:
176