树的直径
sunyutian1998
这个作者很懒,什么都没留下…
展开
-
Adjoin the Networks Gym - 100781A
http://codeforces.com/gym/100781/attachments给出一个森林 问将图连通后最小的树直径对于所有连通块都求出直径 若只有一个连通块则直接输出 有两个则比较一下最大直径以及最大最小折半相连后的直径 取个最小值 因为将两棵树连在一起肯定是连两者重心若多于两个 则用所有重心连一个星形图 为了让树的高度尽可能小 这时次大和次次大的直径的重心之间连边数为2 ...原创 2018-09-10 09:08:03 · 182 阅读 · 0 评论 -
直径 HYSBZ - 3124
https://www.lydsy.com/JudgeOnline/problem.php?id=3124第一问求树的直径 第二问求有多少边被所有直径覆盖求第一问时把直径上的点存下来 枚举直径上的点 求一下不走直径上的点所能到达的最远距离 记为dis3 如果和直径的左端点距离相等 就把当前点到左端点的边都标记 这些边就是不符合条件的 和直径的右端点距离相等同样处理要求的边时被所有直径覆...原创 2018-09-07 16:22:07 · 218 阅读 · 0 评论 -
A Research on "The Hundred Family Surnames" HihoCoder - 1387
https://hihocoder.com/login#include <bits/stdc++.h>using namespace std;struct node1{ int v; int next;};struct node2{ int x; int y; int dis;};map <string,in...原创 2018-09-14 10:54:10 · 177 阅读 · 0 评论 -
Book of Evil CodeForces - 337D
http://codeforces.com/problemset/problem/337/D给一棵树 其中有m个点是重要点 一个点到这m给点的距离都小于等于d才算符合条件 问有多少点符合条件把这m个点想象成m个半径为d的圆 题目就是问有多少点被这m个半径相同的圆全部覆盖 可以想到要求m个点中相距最远的两个点 具体怎么求其实就是树的直径的变形了一个点要符合条件 肯定要满足最严苛的这两个点...原创 2018-09-30 22:04:56 · 188 阅读 · 0 评论 -
Building Fire Stations Gym - 100554B
http://codeforces.com/gym/100554/problem/B考虑二分一个距离 看能否选两个点用这个距离把整个图覆盖 具体选哪两个点 肯定在直径上 感觉就在直径对称位置上 比赛时就想到这 然后居然觉得不对 还想了个例子把自己推翻了 真他妈智障啊。。其实正解就是这样在直径对称位置上选择uv这两点后 整个树图被分为三块 uv子树各一块 剩下的为一块 u到直径端点就是我当前...原创 2018-10-25 13:50:17 · 181 阅读 · 0 评论 -
树上的最远点对 51Nod - 1766
https://www.51nod.com/Challenge/Problem.html#!#problemId=1766在点集S1 S2中各找出两个最远的点 将S1 S2合并后最远的两个点一定在这四个点之间 满足区间可加性 线段树优化还有就是求LCA 发现之前一直写的是假算法 每次查询都是log的复杂度。。完全可以利用倍增数组结合位运算做到O1查询 就和普通rmq一样 #inc...原创 2018-12-10 16:01:55 · 266 阅读 · 0 评论