Codeforces Round 903 (Div. 3) F. Minimum Maximum Distance

news/2024/11/18 4:35:49/文章来源:https://www.cnblogs.com/djhjojo/p/18356617

https://codeforces.com/contest/1881/problem/F

不难发现一件事情,我们这里最后的答案所在的点是 1 和 3 号点。

我们有没有发现一个性质:就是这两个点都是红点间的路径上的,而且最后的答案就是最长的红点间的距离的长度除以二上取整。

那么,我们怎么找到最长的红点间的距离呢?

很显然,$O(n^2)$ 枚举两个点然后求距离是会超时的。

这里有一个比较奇妙的算法,就是先钦定一个红点为根节点,然后不停地删除每一条边上的叶子节点,直到这个叶子节点为红点位置就停止在这一条树枝上的操作。

接着,我们删完点后,求出整棵树的直径,也就是红点间的最长距离。

具体为什么呢?

因为很显然,我们删完点后,所有的叶子结点都是红色节点,而直径本身就是从一个叶子节点到另外一个叶子节点,所以这个时候我们求出来的答案救赎对的。

最后我们只需要把直径的长度除以二后向上取整即可。

这里删除节点的复杂度是 $O(n)$ 的,而求直径的dfs 也是 $O(n)$ 的,所以最后的复杂度显然就是 $O(n)$ 的。

#include<bits/stdc++.h>
//#define x first
//#define y second
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int N=4e5+10,M=2010;
int n,k,res;
int e[N],ne[N],h[N],idx;
bool mark[N],st[N];
void add(int a,int b)
{e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}
void dfs1(int u,int father)//删点
{int cnt=0;for(int i=h[u];~i;i=ne[i]){int j=e[i];if(j==father) continue;dfs1(j,u);if(!st[j]) cnt++;}if(!cnt&&!mark[u]) st[u]=true;
}
int dfs2(int u,int father)//求树的直径
{int d1=0,d2=0;for(int i=h[u];~i;i=ne[i]){int j=e[i];if(j==father||st[j]) continue;int d=dfs2(j,u)+1;if(d>d1) d2=d1,d1=d;else if(d>d2) d2=d;}res=max(res,d1+d2);return d1;
}
int main()
{ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int t;cin>>t;while(t--){memset(h,-1,sizeof h);memset(mark,0,sizeof mark);memset(st,0,sizeof st);cin>>n>>k;int root;while(k--){int x;cin>>x;mark[x]=true;root=x;}for(int i=0;i<n-1;i++){int a,b;cin>>a>>b;add(a,b);add(b,a);}dfs1(root,-1);res=0;dfs2(root,-1);cout<<(res+1)/2<<endl;}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/783203.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

apifox进行https接口测试

SSL双向认证-SpringBoot项目_apifox 添加证书-CSDN博客 说是 SSL 证书验证 开启,可能验证不通过,根据实际情况来单向认证,客户端证书就不必上传了注: 这里我上传的是p12证书,所以选择下图所示上传另外,这里用的是rsa2048,SM2试了,貌似有问题,如果只是简单的get,可以考…

docker 构建java 部署包

去官网查找对应的镜像资源。 建议最好选择官方的镜像,避免出现一些奇奇怪怪的问题。由于JDK8现在开始收费,因此只能使用OpenJDK的镜像。.1.拉取Java镜像. docker pull java:openjdk-82.运行java容器。 a.先创建一个Java目录 :mkdir /app/zh_lawsuit_oracle/ b.在本地准备一…

Odoo17 门户链接访问令牌

为了方便共享文档,odoo在每个文档模型中都加入了共享链接的快捷分享功能,用户可以方便的在想要分享的文档上将文档的链接分享给客户/供应商。我们以销售订单为例,来看一下分享功能的使用方法. 生成共享链接 我们在想要分享的文档上点击动作-分享,会弹出一个对话框:在显示的…

USB硬件特性(速度、名称、供电)

USB传输速度 USB1.0版本,USB LS(Low Speed低速),速度1.5Mbps。 USB1.1版本,USB FS(Full Speed全速),速度12Mbps。 USB2.0版本,USB HS(High Speed高速),速度480Mbps。 USB3.0版本,USB SS(Super Speed超速),速度5Gbps。 USB3.1版本,USB SS(Super Speed超速),速度10Gbps…

wpf 如何写一个圆形的进度条

先看一下效果吧调用代码如下<local:CycleProgressBar Width="100" Height="100" Background="#FFF68986" Foreground="#FFFA1F09"Maximum="100" Minimum="0" Value="20" IsIndeterminate="Fals…

与LLMs进行在IDE中直接、无需提示的交互是工具构建者探索的一个有希望的未来方向

这个观点在卡内基梅隆大学与谷歌研究人员合作文章《Using an LLM to Help With Code Understanding》中提出。这个观点在卡内基梅隆大学与谷歌研究人员合作文章 《Using an LLM to Help With Code Understanding》 中提出。 论文地址:https://dl.acm.org/doi/abs/10.1145/3597…

dbeaver连oceanBase

1. OceanBase OceanBase是由蚂蚁集团完全自主研发的企业级分布式关系数据库,始创于2010年。OceanBase具有数据强一致、高可用、高性能、在线扩展、高度兼容SQL标准和主流关系数据库、低成本等特点。 2020年6月:OceanBase独立公司化运作。2021年6月1日,OceanBase正式对外开源…

KingbaseES RAC运维案例之---集群及数据库管理

KingbaseES、KingbaseRAC案例说明: KingbaseES RAC在部署完成后,进行日常的集群及数据库管理。 适用版本: KingbaseES V008R006C008M030B0010 操作系统版本: [root@node201 KingbaseHA]# cat /etc/centos-release CentOS Linux release 7.9.2009 (Core)集群架构: 如下所示…

“mouseover”和“mouseleave”的事件侦听器

“mouseover”和“mouseleave”的事件侦听器 “mouseover”和“mouseleave”是两个常用的事件侦听器,用于处理鼠标在网页上移入和移出元素的操作。 “mouseover”事件:当鼠标指针移入一个元素时触发。可以通过添加“mouseover”事件侦听器来执行相应的操作,例如改变元素的样…

易基因:儿童和成人实体瘤共有微小差异甲基化区域(mDMR)的全面分析 | 表观研究

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 癌症是美国1~14岁儿童第二大常见死因,每年约有11000例新发病例和1200例死亡病例。与成人癌症相比,儿童肿瘤通常突变负荷较低。然而儿童肿瘤的表观基因组发生显著变化,尤其具有广泛的DNA甲基化变化。儿童肿瘤…

东舟技术诚邀相聚2024汽车测试及质量监控博览会

引领汽车测试行业的年度盛会即将拉开帷幕!2024汽车测试及质量监控博览会将于2024年8月28日至30日在上海世博展览馆1号馆盛大举行。它已牢固确立为不可或缺的测试和验证技术展会,涵盖从样车到生产的全过程,展示大量用于测试、开发和验证阶段的新设备,以实现更好的耐久性、可…

如何挑选最适合您需求的项目管理系统

国内外主流的10款国外项目管理软件对比:PingCode、Worktile、Trello、Monday.com、ClickUp、Jira、Asana、Tapd、Tower、Teambition。在管理复杂项目时,选对工具是成功的关键。全生命周期项目管理系统不仅可以帮助你保持项目的进度和预算控制,还能优化资源分配和风险管理。但…