info: { blogIcon: 'https://cdn.luogu.com.cn/upload/usericon/765493.png', blogUser: 'OIerBoy', blogAvatar: 'https://cdn.luogu.com.cn/upload/usericon/765493.png', blogStartDate: '2023-04-22', webpageTitleOnblur: '(o?v?)ノ Hi', webpageTitleOnblurTimeOut: 1000, webpageTitleFocus: '(*′?`*) 欢迎回来!', webpageTitleFocusTimeOut: 1000, webpageIcon: "https://cdn.jsdelivr.net/gh/BNDong/Cnblogs-Theme-SimpleMemory@master/img/webp/blog_logo.webp", { enable: true, // 是否开启日/夜间模式切换按钮 auto: { // 自动切换相关配置 enable: false, // 开启自动切换 dayHour: 5, // 日间模式开始时间,整数型,24小时制 nightHour: 19 // 夜间模式开始时间,整数型,24小时制 } } },

papricice

2023-07-14

题目

题目传送门

题目大意

给定一个 n 个点的树,这 n 个点编号为 1n
现在要选择断掉两条边,会形成三个连通块,假设这三个连通块内的点数分别为 a,b,c,那么您要做的就是最小化 max{a,b,c}min{a,b,c} 的大小,求这个最小值。

难度&重要性(1~10):6

题目来源

COCI,luogu

题目算法

STL

解题思路

由于要切两刀,我们可以考虑先枚举 i 切断点 i 与其父节点的连边,再去找另一条边。
这里我们这知道,由于一条边已经定下,另一条边当然是切得越平均越好。
设切断节点 j 与其父节点的连边,sizx 为以节点 x 为根的子树大小。
考虑两种情况:

  • 如果节点 j 是节点 i 的祖先,那么三棵树的大小就为 sizi,sizjsizi,nsizisizj
  • 如果节点 j 不是节点 i 的祖先,那么三棵树的大小就为 sizi,sizj,nsizisizj

因为需要第二条边切的尽量平均,则越接近 nsizi2 越好,这里我们就可以用 set 来维护它的前驱后继来得到答案。

完成状态

已完成

posted @   OIerBoy  阅读(26)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示