poj1741 树上的点分治】的更多相关文章

题意: 一棵10000个点的树,每条边的长不超过1000,给定一个值k,问距离不超过k的点对数有多少.(多组数据) 输入样例: 5 4 1 2 3 1 3 1 1 4 2 3 5 1 0 0输出样例:8----------------------------------------------------------------------------这个题目是在CODEVS 2756 树上的路径 的学习过程中看到别人的题解的过程中看到的,这个题相对简单,是做那个题的基础.基本上是人家的代码,和…
给你1e5个节点的树,(⊙﹏⊙) 你能求出又几对节点的距离小于k吗??(分治NB!) 这只是一个板子题,树上分治没有简单题呀!(一个大佬说的) #include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #include<vector> #define maxn 10020 using namespace std; struct Node { int p; i…
Description 给一棵有n个节点的树,每条边都有一个长度(小于1001的正整数). 定义dist(u,v)=节点u到节点v的最短路距离. 给出一个整数k,我们称顶点对(u,v)是合法的当且仅当dist(u,v)不大于k. 写一个程序,对于给定的树,计算有多少对顶点对是合法的. Input 输入包含多组数据. 每组数据的第一行有两个整数N,K(N<=10000).接下来N-1行每行有三个整数u,v,l,代表节点u和v之间有一条长度l的无向边. 输入结束标志为N=K=0. Output 对每…
题意是说给了n个点的树n<=10000,问有多少个点对例如(a,b)他们的之间的距离小于等于k 采用树的分治做 #include <iostream> #include <cstdio> #include <string.h> #include <algorithm> #include <vector> using namespace std; ; ],to[maxn*],numofE,dist[maxn*]; void add(int u…
#include <iostream> #include <stdio.h> #include <string.h> #include <algorithm> #define N 40005 #define M 80005 #define LL long long using namespace std; const int INF = 0x3f3f3f3f; int ver[M],edge[M],head[N],Next[M]; int n,m,tot,r…
题目大意: 找到树上点对间距离不大于K的点对数 这是一道简单的练习点分治的题,注意的是为了防止点分治时出现最后分治出来一颗子树为一条直线,所以用递归的方法求出最合适的root点 #include <cstdio> #include <cstring> #include <iostream> #include <vector> #include <algorithm> using namespace std; #define N 10005 int…
题意:给一棵树,问你最多能找到几个组合(u,v),使得两点距离不超过k. 思路:点分治,复杂度O(nlogn*logn).看了半天还是有点模糊. 显然,所有满足要求的组合,连接这两个点,他们必然经过他们的最小公共子树. 参考:[poj1741]Tree 树的点分治 代码: #include<set> #include<map> #include<stack> #include<cmath> #include<queue> #include<…
题目链接:http://poj.org/problem?id=1741 题意:求树上两点之间距离小于等于k的点对的数量 思路:点分治模板题,推荐一篇讲的非常好的博客:https://blog.csdn.net/qq_39553725/article/details/77542223 实现代码: #include<iostream> #include<cstring> #include<algorithm> using namespace std; #define ll…
Tree Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 25286   Accepted: 8421 Description Give a tree with n vertices,each edge has a length(positive integer less than 1001).  Define dist(u,v)=The min distance between node u and v.  Give a…
传送门 良心解析 其实以前在求某段序列上的区间统计问题时就碰到过类似于这样的思想. 当时的区间统计问题思路大致是这样: 选取一个点作为中间点,从这个点的左边和右边统计出满足条件的点对.然后当前的中间点就可以删去了,接着递归统计左右两个区间的方案数. 其实这就是个分治和分类讨论的思想. 满足要求的解无非就是这两种: 1.区间包含中间点(也就是两端点在中间点的左右两边) 2.区间不包含中间点(也就是两个端点都在中间点的左边或右边) 所以正确性显而易见 淀粉质就是把这种思想应用于树上的路径统计上,选取…