题解:【XR-3】核心城市
题解:【XR-3】核心城市
思路一:考虑由特例推广到一般
1、很容易想到先考虑一个关键点的情况,然后再推广到一般情况。
2、一个点肯定选距离上最平衡的那个点,即树的中心。接着在中心周围贪心的选剩下的(k-1)个关键点即可。
3、这里有一个误区:
各点到某点的距离最小,是找树的中心而不是重心!!!
各点到某点的距离最小,是找树的中心而不是重心!!!
各点到某点的距离最小,是找树的中心而不是重心!!!
(树的重心:最小化 最大的子树大小;树的中心:最小化 各点到某点的距离,即树的直径的中点)
#include<bits/stdc++.h>
#define F(i,l,r) for(int i=l;i<=r;++i)
#define G(i,r,l) for(int i=r;i>=l;--i)
#define int long long
using namespace std;
char buf[100],*p1=buf,*p2=buf;
inline int gc(){return (p1==p2)&&(p2=(p1=buf)+fread(buf,1,100,stdin),p1==p2)?EOF:*p1++;}
inline int rd(){
int x=0; char ch; bool f=1;
while(!isdigit(ch=gc())) f^=(ch=='-');
do x=(x<<3)+(x<<1)+(ch^48); while(isdigit(ch=gc()));
return x;
}
const int N=1e5+5;
struct node{ int v,ne; }e[N<<1];
int first[N],dis[N],len[N],pre[N],a[N];
int n,idx=0,k,cx=0,mn=1000000000;
void add(int x,int y){ e[++idx]=(node){y,first[x]}; first[x]=idx;}
void go(int u,int f){
dis[u]=dis[f]+1; pre[u]=f;
if(dis[u]>dis[cx]) cx=u;
for(int i=first[u];i;i=e[i].ne) if(e[i].v!=f) go(e[i].v,u);
}
void dfs(int u,int f){
len[u]=1;
for(int i=first[u];i;i=e[i].ne){
int v=e[i].v; if(v==f) continue;
dfs(v,u);
len[u]=max(len[v]+1,len[u]);
}
}
signed main(){
n=rd(),k=rd(); int u,v;
F(i,1,n-1) u=rd(),v=rd(),add(u,v),add(v,u);
go(1,0);
dis[cx]=0;
go(cx,0);
int cnt=1,iii=(dis[cx]+1)/2;
while(cnt!=iii && pre[cx]) cx=pre[cx],++cnt;
dfs(cx,0);
sort(len+1,len+n+1);
printf("%lld",len[n-k]);
return 0;
}
思路二:考虑逆向思维
1、发现 “选k个关键点放入圈中” 等同于 “选(n-k)个非关键点出圈”。
2、而由题可知,k个关键点是一个连通块,所以叶子结点是最先出圈的。由此确定,删点是从外而内一层层删。
3、用topsort模拟删点的过程即可,由于是用广搜实现topsort,因此点是”一轮一轮删的“,删完(n-k)个点后到了第几轮,答案就是几。
题解:【XR-3】核心城市的更多相关文章
- 解题报告:luogu P5536 【XR-3】核心城市
题目链接:P5536 [XR-3]核心城市 这题是某次月赛题. 这题我完全是看标签猜的. 优先选择直径中点即可,这里重要的是互通,很容易想到用堆维护可选的,预处理直径和距叶节点距离即可(最近),实质上 ...
- 【XR-3】核心城市(树直径)
[XR-3]核心城市 这题真的难啊......... k个核心城市太麻烦,我们假设先找一个核心城市,应该放在哪里? \(任意取一个点,它的最远端是直径的端点.\) \(所以当这个点是直径的中点时,可以 ...
- Comet OJ - Contest #9 & X Round 3 【XR-3】核心城市 【树的理解】
一.题目 [XR-3]核心城市 二.分析 题意就是在树中确定$K$个点,满足剩下的$N-K$个点中到这$K$个点的最大距离尽可能小. 理解上肯定是确定一个根,这个根是这个图的中心. 可以通过根据结点的 ...
- LG5536 「XR-3」核心城市 树的直径
问题描述 LG5536 题解 两次 \(\mathrm{dfs}\) 求树的直径. 然后找到树的直径的中点. 然后按照 子树中最深的点深度-自己深度 排序,贪心选取前 \(k\) 个. \(\math ...
- 城市平乱 ---- Dijkstra
题解 : 以暴乱城市 为 源点 向所有点做最短路径 , 然后检查每个不对到暴乱城市的 最短距离 #include<stdio.h> #include<string.h> #in ...
- 8.9 NOIP模拟测试15 建设城市(city)+轰炸行动(bomb)+石头剪刀布(rps)
鉴于T3的惨烈程度,我决定先来颓篇题解. T1 建设城市(city) 挡板法+容斥 m个建设队分成n组,每组必须有一个,先不考虑上限,共有 C(m-1,n-1)种方案. 有i个组是超过k个的,容斥掉 ...
- 2016亚洲城市GDP50强出炉
2017年年1月,中国各省GDP排名,台湾排第6:广东,江苏,山东,浙江,河南,台湾,四川,湖北,河北,湖南,我国台湾地区去年的GDP增长率为1.4%,总量折合人民币约为37329.1亿元,加入全国榜 ...
- 微信小程序想要的是无法监测的流量dark social
“微信小程序”将带来什么样的变化?就单单的是一个超级Web app?还是只是为了给大家手机节省一些空间?腾讯想要的是高达70%以上的“无法监测的巨大流量”,称之为“dark social”(暗社交). ...
- Educational Codeforces Round 15 C 二分
C. Cellular Network time limit per test 3 seconds memory limit per test 256 megabytes input standard ...
- Educational Codeforces Round 15 Cellular Network
Cellular Network 题意: 给n个城市,m个加油站,要让m个加油站都覆盖n个城市,求最小的加油范围r是多少. 题解: 枚举每个城市,二分查找最近的加油站,每次更新答案即可,注意二分的时候 ...
随机推荐
- .NET 9发布的最后一个预览版Preview 7, 下个月发布RC
微软在2024年8月9日 发布了.NET 9 Preview 7[1],这是它在2024 年 11 月 12 日 RTM 之前进入发布候选阶段之前的最后预览版, 将在.NET Conf 2024 一起 ...
- Mac升级Ventura 13.0.1后无法远程ssh连接服务器
原因 原因是Mac os Ventura升级了ssh到9.0,ssl到3.3.6,而服务器上的sshd还是老版本:服务器上的老版本ssh和ssl无法和mac上的新版本ssh和ssl交互,新版本ssh加 ...
- Superset导航栏高亮问题处理
在superset => templates => appbuilder 文件夹下找到 navbar.html 如果没有可对应新建,navbar.html内容如下 {% set menu ...
- 22.11.20 ICPC合肥站 打星记录
A,B,H签到. B题:注意区分相对误差与绝对误差!!小数相对误差小于1e-6,至少要输出十二位! G题优先队列.场上十几分钟就想出来了,表扬自己一波,留个坑位写题解. M题情况不多直接暴搜, 最后一 ...
- Linux下错误解决方案
错误 "E: Unable to correct problems, you have held broken packages."这种问题包破坏问题,可能是由于镜像源与系统版本不 ...
- 安装 MinGW-w64
简介 MinGW-w64 是 MinGW 项目的 64 位版本.MinGW(Minimalist GNU for Windows)是 GCC 编译套件和 GNU Binutils 移植到 Window ...
- windows 误删除\AppData\Local\文件夹后 异常的修复
背景:清除Temp文件夹时,路径复制错误,少复制了Temp,导致删除了文件夹 C:\Users\username\AppData\Local\ 异常现象: 估计删除Local文件夹后,出现的问题应该会 ...
- 知乎问题:为什么很多web项目还是使用 px,而不是 rem?
阅读过几篇关于 px rem 的文章,感觉 rem 很强大.但是自己接触到的公司项目全部都使用 px,想知道为什么.是我司技术更新落后了吗? 我们当然有在用 vw 和 vh,但是只是在 layout ...
- 十,Spring Boot 的内容协商的详细剖析(附+Debug调试说明)
十,Spring Boot 的内容协商的详细剖析(附+Debug调试说明) @ 目录 十,Spring Boot 的内容协商的详细剖析(附+Debug调试说明) 1. 基本介绍 2. 准备工作 3. ...
- Kubernetes Pod生命周期(十七)
前面我们已经了解了 Pod 的设计原理,接下来我们来了解下 Pod 的生命周期.下图展示了一个 Pod 的完整生命周期过程,其中包含 Init Container.Pod Hook.健康检查 三个主要 ...