博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ4890 & 洛谷3761:[TJOI2017]城市——题解
阅读量:6325 次
发布时间:2019-06-22

本文共 1472 字,大约阅读时间需要 4 分钟。

从加里敦大学城市规划专业毕业的小明来到了一个地区城市规划局工作。这个地区一共有n座城市,n-1条高速公路,保证了任意两运城市之间都可以通过高速公路相互可达,但是通过一条高速公路需要收取一定的交通费用。

小明对这个地区深入研究后,觉得这个地区的交通费用太贵。小明想彻底改造这个地区,但是由于上司给他的资源有限,因而小明现在只能对一条高速公路进行改造,改造的方式就是去掉一条高速公路,并且重新修建一条一样的高速公路(即交通费用一样),使得这个地区的两个城市之间的最大交通费用最小(即使得交通费用最大的两座城市之间的交通费用最小),并且保证修建完之后任意两座城市相互可达。如果你是小明,你怎么解决这个问题?

前置技能:树直径,树半径(代码的树半径是我自己yy的请无视orz)

复杂度显然是$O(n^2)$的,这就使我们支持枚举每条边求出答案。

设拆完路之后的两棵树为$A,B$,那么就有三种情况:

最长路在$A$中

最长路在$B$中

最长路端点分别在$A,B$中

前两者求树直径即可,至于最后一个我们就需要考虑一个问题,到底要把边加在哪里才能使这种情况的长度最小。

显然是要加在树半径最小的两个点上(懒得证了)。

于是切了(顺便复习了怎么求树直径和半径,我觉得我多半是废了基本技能都不会了。)

#include#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;typedef long long ll;const int N=5005;const int INF=1e9;inline int read(){ int X=0,w=0;char ch=0; while(!isdigit(ch)){w|=ch=='-';ch=getchar();} while(isdigit(ch))X=(X<<3)+(X<<1)+(ch^48),ch=getchar(); return w?-X:X;}struct node{ int w,to,nxt;}e[N*2];int n,cnt,head[N],f[N][3];bool vis[N];inline void add(int u,int v,int w){ e[++cnt].to=v;e[cnt].w=w;e[cnt].nxt=head[u];head[u]=cnt;}int ans;void dfs1(int u,int fa){ for(int i=head[u];i;i=e[i].nxt){ int v=e[i].to,w=e[i].w; if(vis[v]||fa==v)continue; dfs1(v,u); if(f[u][0]

+++++++++++++++++++++++++++++++++++++++++++

+本文作者:luyouqi233。               +

+欢迎访问我的博客:+

+++++++++++++++++++++++++++++++++++++++++++

转载于:https://www.cnblogs.com/luyouqi233/p/9194825.html

你可能感兴趣的文章
AS3.0中的显示编程(四)-- DisplayObjectContainer
查看>>
Lock应用之 可中断
查看>>
varnish缓存实现动静分离
查看>>
[jQuery]empty()和remove()的区别
查看>>
WSUS Technology Overview
查看>>
运营商NAT部署方案探讨
查看>>
Debenham养老金项目关键流程4-Opt in 流程
查看>>
安装和配置SQL Server 2016 With SP1
查看>>
Android Action Bar 加入Back键
查看>>
U盘修复
查看>>
NFS服务器问题
查看>>
MSP430学习笔记5-利用蜂鸣器演奏音乐
查看>>
Asp.Net中几种相似数据绑定标记符号的解释及用法
查看>>
Python黑帽编程2.4 流程控制
查看>>
Spoj 2713 Can you answer these queries IV 水线段树
查看>>
玩转Google开源C++单元测试框架Google Test系列(gtest)之六 - 运行参数
查看>>
[nRF51822] 12、基础实验代码解析大全 · 实验19 - PWM
查看>>
c# override,new关键字区别与使用(学习笔记)
查看>>
C#读写内存也不差
查看>>
Asp.net控件开发学习笔记(七)----WebControl基类
查看>>