papricice
2023-07-14
题目
题目大意
给定一个 \(n\) 个点的树,这 \(n\) 个点编号为 \(1\) 到 \(n\)。
现在要选择断掉两条边,会形成三个连通块,假设这三个连通块内的点数分别为 \(a,b,c\),那么您要做的就是最小化 \(\max\{a,b,c\}-\min\{a,b,c\}\) 的大小,求这个最小值。
难度&重要性(1~10):6
题目来源
COCI,luogu
题目算法
STL
解题思路
由于要切两刀,我们可以考虑先枚举 \(i\) 切断点 \(i\) 与其父节点的连边,再去找另一条边。
这里我们这知道,由于一条边已经定下,另一条边当然是切得越平均越好。
设切断节点 \(j\) 与其父节点的连边,\(siz_x\) 为以节点 \(x\) 为根的子树大小。
考虑两种情况:
- 如果节点 \(j\) 是节点 \(i\) 的祖先,那么三棵树的大小就为 \(siz_i,siz_j-siz_i,n-siz_i-siz_j\)。
- 如果节点 \(j\) 不是节点 \(i\) 的祖先,那么三棵树的大小就为 \(siz_i,siz_j,n-siz_i-siz_j\)。
因为需要第二条边切的尽量平均,则越接近 \(\frac{n-siz_i}{2}\) 越好,这里我们就可以用 set 来维护它的前驱后继来得到答案。
完成状态
已完成
随机推荐
- operation not supported on selected printer
operation not supported on selected printer 版本原因 解决办法, 每次打印前先选择一次打印机属性,弹窗点确认还是取消都行,最后返回再点打印即可
- 【python基础】新建/运行python项目
1.新建python项目 在编写程序之前,我们需要新建一个项目(Project),在桌面双击PyCharm的快捷方式,等待片刻,打开如下所示的软件界面.点击New Project 在弹出的对话框中,需 ...
- Python3 解决pip报ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:598)
ERROR: Could not install packages due to an EnvironmentError: HTTPSConnectionPool(host='files.python ...
- IntelliJ IDEA 最新激活码:2023、2022及以下版本通用(亲测有效)
分享一下 IntelliJ IDEA 2023.1 最新激活注册码,破解教程如下,可免费永久激活,亲测有效,下面是详细文档哦~ 申明:本教程 IntelliJ IDEA 破解补丁.激活码均收集于网络, ...
- Hugging News #0602: Transformers Agents 介绍、大语言模型排行榜发布!
每一周,我们的同事都会向社区的成员们发布一些关于 Hugging Face 相关的更新,包括我们的产品和平台更新.社区活动.学习资源和内容更新.开源库和模型更新等,我们将其称之为「Hugging Ne ...
- ARC144
ARC 144 比赛情况:一眼订正,鉴定为做起 \(3\) 道题. A - Digit Sum of 2x \(2x\) 进位就不满足 \(M\) 最大的条件了,所以 \(x\) 不能进位. 然后要求 ...
- selenium4-定位组元素
总体思路:find_elements() 该方法将所有定位到的元素放到一个列表中,再通过列表的下标定位到具体元素. 例1.使用tag name定位到百度搜索框,并输入selenium关键字 servi ...
- 自研API 网关 - 媲美美团这套Shepherd网关架构!
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 我说:"很多互联网大厂,很少基于 SpringMVC 模块对外提供 WEB 服务的 ...
- const 使用
宏定义与const的区别?(概念题是最容易丢分)1. 发生时机不一样: 宏定义发生在预处理时,const关键字发生编译时2. 宏定义仅仅只做了字符串的替换,没有类型检查; const关键字有类型检查, ...
- 一次Mybaits查询的源码分析
很好奇Mybaits是怎么将xml和mapper对应起来的,用一段比较简单的demo去debug追踪一下源码看看 先用xml配置的方式,看懂了再去看注解的方式是怎么实现的 获取Mapper Mybai ...