题目链接:https://vjudge.net/problem/HDU-6446 题意:简化题意后就是求距离和的2*(n-1)!倍。 思路: 简单的树形dp,通过求每条边的贡献计算距离和,边(u,v)的贡献为sz[v]*(n-sz[v])。 另外因为前几天学点分治,看到这题想到可以用点分治求距离和。 ...
分类:
其他好文 时间:
2019-08-27 20:57:52
阅读次数:
84
题意:给一颗树,n个点,n-1条边,问有多少对点满足两点之间的距离小于k。码一道题 思路:设这个树的根为p,那么点对(x,y)分为过p点或者在p的子树部分,我们将点对按照所过的根节点进行划分成子问题处理,对于每个以p为根的子树,对于这个树,我们求d数组记录点到根的距离,b数组记录点所在根哪个子节点, ...
分类:
其他好文 时间:
2019-08-27 18:53:42
阅读次数:
61
题目链接:https://vjudge.net/problem/HDU-5977 题意:给一颗树,每个结点上有一个权值a[i],a[i]<=10,求有多少条路径满足这条路径上所有权值的结点都出现了。 思路: 首先利用二进制的思想,将a[i]转化为1<<(a[i]-1)。我们在子树中,计算出结点到重心 ...
分类:
其他好文 时间:
2019-08-24 13:20:09
阅读次数:
79
题目链接:https://vjudge.net/problem/POJ-1741 题意:给出一棵树,求出树上距离不超过k的点对数量。 思路:点分治经典题。先找重心作为树根,然后求出子树中所有点到重心的距离dis[i],那么所有组合为dis[i]+dis[j]<=k,其中不合法组合为在重心的同一个子树 ...
分类:
其他好文 时间:
2019-08-20 12:20:49
阅读次数:
81
1.总览 LCT 链分治(树剖) 点/边分治 2.点分治 一棵树,点有$0/1$,多次修改,询问最远的两个$1$距离。 建出点分树,每个子树用堆维护:①最远的$1$距离;②它的每个儿子的①堆顶; 全局维护每棵子树②堆最大的两个值,每次修改暴力改就可以。 时间复杂度$O(n \log^2n)$(基本动 ...
分类:
其他好文 时间:
2019-08-19 09:59:40
阅读次数:
72
1 // Cease to struggle and you cease to live 2 // p4178 3 #include <iostream> 4 #include <cmath> 5 #include <cstdio> 6 #include <cstring> 7 #include < ...
分类:
其他好文 时间:
2019-08-18 22:25:38
阅读次数:
109
1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 const int N=4e4+8; 5 int n,all,mx,root,cntd=0,cnt=0; 6 ll ans=0,k; 7 int h[ ...
分类:
其他好文 时间:
2019-08-18 21:26:20
阅读次数:
63
题目:https://vjudge.net/contest/307753#problem/I 题意:有一颗树,上面有白色黑色点,每个点上有一个权值,权值可以为负,现在我要求一条路径,权值和最大,这条路径满足 白色可以随便经过多少个,黑色点的个数必须<=m 思路:首先又是树上路径题,必然点分治,其实这 ...
分类:
编程语言 时间:
2019-08-17 14:28:14
阅读次数:
83
1.打switch一定要break,23,T1 2.附了变量后忘记乘,22,T3 3.特判没处理全,导致下一次循环爆炸:21,T1 4.明明打出了正解,因为测试点分治失分:20,T2 5.边界没处理好,wa的代码盖掉ac代码:19,T1 6.复制粘贴:18,T2 7.打出正解没测极限数据导致被卡常: ...
分类:
其他好文 时间:
2019-08-16 22:37:32
阅读次数:
112
题目 https://cn.vjudge.net/problem/Gym-101840H 题意 给出一棵树,问有多少对点,将他们之间的边权相乘之后所获得的值仅有两个不同的质因子。 题解 当时没想着用并查集做,写了个点分治= =。我们对于重心的子树挨个搜索,用number数组记录下质因子数量为0, 1 ...
分类:
其他好文 时间:
2019-08-15 21:04:33
阅读次数:
86