不难发现,树中与某个点距离为2的点只可能是它的父亲的父亲、儿子的儿子 或者 兄弟,分类讨论一下即可。只有对于兄弟我们不能暴力搞,维护一下每个节点的所有儿子的前缀和、前缀MAX就行了。 1 #include 2 #include 3 #include 4 using namespace std; 5 ...
分类:
其他好文 时间:
2014-11-11 12:07:44
阅读次数:
270
题目链接:点击打开链接
题意:
给定二维坐标上的4个点
问:
找一个点使得这个点距离4个点的距离和最小
输出距离和。
思路:
若4个点不是凸4边形。则一定是端点最优。
否则就是2条对角线的交点最优,可以简单证明一下。
对于凸4边形则先极角排序一下。
#include
#include
#include
#include
using namespace std;
type...
分类:
编程语言 时间:
2014-11-11 00:52:02
阅读次数:
241
题意:
给定n个点的带边权树Q个询问。
下面n-1行给出树
下面Q行每行一个数字表示询问。
首先求出dp[N] :dp[i]表示i点距离树上最远点的距离
询问u, 表示求出 dp 数组中最长的连续序列使得序列中最大值-最小值
思路:
求dp数组就是求个树的直径然后dfs一下。
对于每个询问,可以用一个单调队列维护一下。O(n)的回答。
#include
#includ...
分类:
其他好文 时间:
2014-11-09 15:18:46
阅读次数:
271
题目大意:给定一棵树,多次询问到三个点距离之和最小的点和距离
首先易知到两个点距离之和最小的点一定在两点间的路径上
于是到三个点距离之和最小的点一定在两两之间路径的交点上
然后很容易就会知道这个交点一定是其中两个点的LCA(其实是我不会证)
此外为什么不会是三个点共同的LCA呢?因为三个点共同的LCA一定是至少一对点的LCA 证明略(其实我也不会证)
然后就是倍增LCA的问题了 我的倍增...
分类:
其他好文 时间:
2014-11-03 16:28:39
阅读次数:
219
两点距离描述输入两点坐标(X1,Y1),(X2,Y2)(0#include int main(){ int n; double sum;scanf("%d",&n);double x1,x2,y1,y2;while(n--){ sum = 0; scanf("%lf%lf%l...
分类:
其他好文 时间:
2014-11-02 17:49:13
阅读次数:
109
POJ 2631 Roads in the North(树的直径)
http://poj.org/problem?id=2631
题意:
有一个树结构, 给你树的所有边(u,v,cost), 表示u和v两点间有一条距离为cost的边. 然后问你该树上最远的两个点的距离是多少?(即树的直径)
分析:
对于树的直径问题, <>(22 2-7)例题有说明.
具体解法: 首先从树上任意一个点a出发, (BFS)找出到这个点距离最远的点b. 然后在从b点出发(BF...
分类:
其他好文 时间:
2014-11-02 12:33:11
阅读次数:
152
POJ 1985 Cow Marathon(树的直径)
http://poj.org/problem?id=1985
题意:
有一个树结构, 给你树的所有边(u,v,cost), 表示u和v两点间有一条距离为cost的边. 然后问你该树上最远的两个点的距离是多少?(即树的直径)
分析:
对于树的直径问题, <>(22 2-7)例题有说明.
具体解法: 首先从树上任意一个点a出发, (BFS)找出到这个点距离最远的点b. 然后在从b点出发(BFS)找到距离...
分类:
其他好文 时间:
2014-11-02 12:27:31
阅读次数:
170
题意:
数轴上有n个点 每个点重量1 可以移动其中k个到任何位置 使得题中式子值最小 di表示第i个点距离现在n个点的重心的距离
思路:
式子中wi可以去掉 因为都是1 则 式子变成I=min(sum(di*di))
考虑移动的k个点 应该直接把它们移到重心 这样di为0
很容易想到 我们将所有点排序后 应该从两边往中间拿 这样移动k个点 剩下一些连续的点 因...
分类:
其他好文 时间:
2014-10-22 22:05:33
阅读次数:
272
题意:在一个有向图中选一个起点,能从这个起点到达所有其他点,还要保证起点到其他点距离中的最大值最小。
思路:先用floyd求出所有两点之间的距离,然后枚举起点,看以这个为起点能不能到达所有点且最大值最小。...
分类:
其他好文 时间:
2014-10-20 17:29:04
阅读次数:
226
题意 在所有城市中找一个中心满足这个中心到所有公交站点距离的最大值最小 输出最小距离和满足最小距离编号最小的中心
最基础的BFS 对每个公交站点BFS dis[i]表示编号为i的点到所有公交站点距离的最大值 bfs完所有站点后 dis[i]最小的点就是要求的点咯
#include
#include
#include
#include
using namespace std;
typ...
分类:
其他好文 时间:
2014-10-18 22:23:20
阅读次数:
242