高质量好题:AGC018D
时间:2021-08-12
本文章向大家介绍高质量好题:AGC018D ,主要包括高质量好题:AGC018D 使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
显然每一条边的最大贡献为 \(w_{e} \times \min(siz_U,siz_V)\) ,其中 \(U,V\) 是边 \(e\) 分割出来的两颗子树。
考虑到当以重心为根的时候(重心丢到最小的那颗子树里去),是可以卡到这个上界的。
构造方法为每次选择重心 \(u\) 的两个最大和次大的子树来回跳跃。
证明:
- 设子树的 \(siz\) 序列为 \(x_{1},x_{2}\dots x_{n}\) 。
- 当这个 \(x_{1}=x_{2}=\dots x_{n}\) 的时候可以直接反复横跳来构造。
- 令 \(x_{1}\) 是序列中最大值, \(x_{2}\) 是序列中最小值,它们的差值为 \(d\) 。
- 每次选出最大值和次大值,让它们都 \(-1\) ,依旧满足 \(x_{1}<\sum^{n}_{i=2}x_{i}\) 。
- 如果 \(x_{2}\) 成为了次大值,说明此时 \(x_{2}=x_{3}=\dots=x_{n}\) 或者\(x_{1}=x_{2}\) , 都是可以构造出来的。
- 如果 \(x_{2}\) 不是次大值,那么每一次 \(-1\) 都可以令差值 \(d-1\) ,同时又由于 \(x_{1}<\sum^{n}_{i=2}x_{i},x_{1}-x_{2}<\sum^{n}_{i=3}x_{i}\) ,经过若干次这种操作之后一定可以让 \(d=0\) 。
- 当然,这个过程中可能出现了最大值和次大值相同的情况,此时 \(-1\) 不一定会令 \(d-1\) ,但是也可以发现这样会变成最大值和次大值之间互相对耗,直到出现了新的最大值为止,依旧满足上述的这些性质,变成了一个子问题。
那么计算每条边的贡献也就是 \(2\times w_{e}\times siz_{u}\) 。
但是考虑到最后的一条边是无法被走两次的,该去掉哪一条边呢?
注意到,如果这棵树不存在两个重心,那么一定可以构造出一种方案使得最后是从非重儿子那边走回来,那么减去的值就是与重心相连的最小的边。否则,可以发现最后一定是从重儿子走回,那么减去重心与重儿子之间的那条边即可。
原文地址:https://www.cnblogs.com/Guts/p/15134866.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Python 错误使用tuple问题:TypeError: 'tuple' object does not support item assignment. 原因及解决办法
- E-BERT,电商领域语言模型优化实践
- PyQt5 技术篇-透明窗口设置方法,窗口透明度的设置
- 为hexo增加gitalk评论系统
- Python 技巧篇-用print打印输出但不换行方法
- gitalk 自动初始化
- 给hexo申请证书并设置https
- Python 面向对象-如何查看类的父类,外部如何获取类的名字
- Python操作excel:用xlwt设置excel单元格背景颜色,给字体加粗。【附】颜色表
- Python+selenium 自动化-获取当前页面的url地址,打开指定的url地址
- PyQt5 技术篇-窗口置顶不生效解决办法,setWindowFlags()设置不生效解决办法
- 使用hooks自动监测git仓库更改并拉取
- 重新部署hexo
- 关于前端哈希加密密码的思考
- PyQt5 技术篇-设置下拉框默认值,获取当前选择的内容