【BZOJ】2237: [NCPC2009]Flight Planning
题意
\(n(1 \le n \le 2500)\)个点的树,求删掉一条边再加上一条边使得还是一棵树,且任意两点最大距离最小。
分析
考虑枚举删掉每一条边,我们只需要考虑如何加边容易求得新树的最大距离。
当然是直径的一半咯。
题解
枚举每一条边,然后求两个连通块的直径,然后最大距离\(=max(len1, len2, (len1+1)/2+(len2+1)/2+1)\)
#include <bits/stdc++.h>
using namespace std;
const int N=2505;
struct E {
int next, to;
}e[N<<1];
int ihead[N], d[N], cnt, clr, n;
void add(int x, int y) {
e[++cnt]=(E){ihead[x], y}; ihead[x]=cnt;
e[++cnt]=(E){ihead[y], x}; ihead[y]=cnt;
}
void dfs(int x, int f) {
for(int i=ihead[x]; i; i=e[i].next) {
int y=e[i].to;
if(y==f || i==clr || i==clr-1) {
continue;
}
d[y]=d[x]+1;
dfs(y, x);
}
}
int getlen(int x) {
memset(d, 0, sizeof(int)*(n+1));
dfs(x, 0);
for(int i=1; i<=n; ++i) {
if(d[i]>d[x]) {
x=i;
}
}
memset(d, 0, sizeof(int)*(n+1));
dfs(x, 0);
for(int i=1; i<=n; ++i) {
if(d[i]>d[x]) {
x=i;
}
}
return d[x];
}
int x[N], y[N];
int main() {
scanf("%d", &n);
for(int i=1; i<n; ++i) {
scanf("%d%d", &x[i], &y[i]);
add(x[i], y[i]);
}
int ans=n;
for(int i=1; i<n; ++i) {
clr=i*2;
int len1=getlen(x[i]), len2=getlen(y[i]), a=(len1+1)/2, c=(len2+1)/2;
ans=min(ans, max(a+c+1, max(len1, len2)));
}
printf("%d\n", ans);
return 0;
}
【BZOJ】2237: [NCPC2009]Flight Planning的更多相关文章
- bzoj2237[NCPC2009]Flight Planning 结论题?
2237: [NCPC2009]Flight Planning Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 55 Solved: 27[Submi ...
- 【BZOJ】3052: [wc2013]糖果公园
http://www.lydsy.com/JudgeOnline/problem.php?id=3052 题意:n个带颜色的点(m种),q次询问,每次询问x到y的路径上sum{w[次数]*v[颜色]} ...
- 【BZOJ】3319: 黑白树
http://www.lydsy.com/JudgeOnline/problem.php?id=3319 题意:给一棵n节点的树(n<=1e6),m个操作(m<=1e6),每次操作有两种: ...
- 【BZOJ】3319: 黑白树(并查集+特殊的技巧/-树链剖分+线段树)
http://www.lydsy.com/JudgeOnline/problem.php?id=3319 以为是模板题就复习了下hld............................. 然后n ...
- 【BZOJ】1013: [JSOI2008]球形空间产生器sphere
[BZOJ]1013: [JSOI2008]球形空间产生器sphere 题意:给n+1个n维的点的坐标,要你求出一个到这n+1个点距离相等的点的坐标: 思路:高斯消元即第i个点和第i+1个点处理出一个 ...
- 【BZOJ】1002:轮状病毒(基尔霍夫矩阵【附公式推导】或打表)
Description 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道.如下图 ...
- 【BZOJ】【3083】遥远的国度
树链剖分/dfs序 其实过了[BZOJ][4034][HAOI2015]T2以后就好搞了…… 链修改+子树查询+换根 其实静态树的换根直接树链剖分就可以搞了…… 因为其实只有一样变了:子树 如果roo ...
- 【BZOJ】【2434】【NOI2011】阿狸的打字机
AC自动机+DFS序+BIT 好题啊……orz PoPoQQQ 大爷 一道相似的题目:[BZOJ][3172][TJOI2013]单词 那道题也是在fail树上数有多少个点,只不过这题是在x的fail ...
- 【BZOJ】【2738】&【Tsinsen】【A1333】矩阵乘法
整体二分+树状数组 过了[BZOJ][2527][POI2011]Meteors以后这题就没那么难啦~ 关键是[从小到大]依次插入数字,然后整体二分每个查询的第k大是在第几次插入中被插入的……嗯大概就 ...
随机推荐
- Android 5.0 如何正确启用isLoggable(一)__使用详解
转自:http://blog.csdn.net/yihongyuelan/article/details/46409389 isLoggable是什么 在Android源码中,我们经常可以看到如下代码 ...
- c#将http调用返回额json中的有关中文的unicode转换为中文(转)
转转地址:http://www.cnblogs.com/promise-7/archive/2012/11/05/2755515.html 中文转Unicode:HttpUtility.UrlEnco ...
- 比较各大挪动门户网站淘宝、京东、网易、新浪、腾讯meta标签的异同
首先先展示一下各个网站的有关meta标签的代码: 网易 <meta charset="UTF-8"> <meta content="width=devi ...
- java中常用的工具类(二)
下面继续分享java中常用的一些工具类,希望给大家带来帮助! 1.FtpUtil Java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...
- 攻城狮在路上(壹) Hibernate(十四)--- Hibernate的检索方式(下)
本节介绍HQL和QBC的高级用法:各种连接查询.投影查询.报表查询.动态查询.集合过滤和子查询等.另外将归纳优化查询程序代码,从而提高查询性能的各种技巧.一.连接查询: HQL与QBC支持的各种连接类 ...
- less 入门1
less 入门1 less.html <!DOCTYPE html> <html lang="zh-cn"> <head > <meta ...
- [Linux] yum和apt-get用法及区别
一般来说著名的linux系统基本上分两大类: 1.RedHat系列:Redhat.Centos.Fedora等 2.Debian系列:Debian.Ubuntu等 RedHat 系列 1 常见的安装包 ...
- PowerDesigner(PowerDesigner15.1.0.2850)下载、安装以及破解
转自:http://www.cnblogs.com/Fonkie/articles/1600662.html 一.先安装PowerDesigner15(PowerDesigner15.1.0.2850 ...
- matlab练习程序(碎片)
这个算法是对photoshop中滤镜->像素化->碎片这个功能的学习. PS这个功能好像不带参数,不过我这里有滤波半径r可以进行控制. 因为我是看效果猜算法的,效果肯定有所区别. 我的想法 ...
- 函数调用关于从Ring3转到Ring0 ESP堆栈变化
在ring0堆栈获取ring3堆栈方式 第一种方式 [esp+4] == [esp+参数个数*4+4] 如果这里不相等就需要用第二种方式 [[esp+参数个数*4+8]] 这里面的值就是Ring3的堆 ...