problem && blog

第一道正经的 Ynoi,特此写篇题解纪念一下。


Algorithm 1

可以想到 \(O(nm)\) 的 DP。

我们定义 \(dp_u\) 为 \(u\) 子树内并包含 \(u\) 的连通点集,权值之和最大。

所以就有 DP 式啦!!

\[dp_u = a_u + x + \max(0,dp_v)
\]

Algorithm 2

我们需要考虑优化。

既然加上 \(dp_v\) 的条件为 \(dp_v \ge 0\)。那么我们可以把不符合这个条件 \(v\) 与他的父亲节点 \(u\) 的边删掉,到 \(dp_v \ge 0\) 时把 \(v\) 和 \(u\) 连起来。

所以我们的 DP 转移就变成了:

\[dp_u = a_u + x + dp_v
\]

如果我们把 \(x\) 从小到大排序,那么 \(dp_u\) 就一定是单调递增的。

所以 \(\max(0,dp_u)\) 是取 \(0\) 还是 \(dp_u\) 指只会变一次。

所以 \(u\) 与 \(v\) 的联通关系也只会改变一次。

所以我们如果可以的时候只需要在 \(dp_v\) 大于 \(0\) 时从 \(v\) 往上走,如果可以联通就连上。

此时我们需要计算 \((u,v)\) 这一条边在 \(x \ge\) 时联通。

所以我们就可以列出方程:

\[siz \times val + sum \ge 0
\]

解出 \(val \le \left \lceil \dfrac{-sum}{siz} \right \rceil\)。

其中 \(sum\) 为子树和,\(siz\) 为字数大小。

所以我们就可以把所有的 \(\left \lceil \dfrac{-sum}{siz} \right \rceil\) 扔到一个堆里。每次取出最小元素看是否小于等于当前的 \(x\),如果小于等于就修改。

所以我们只需要一个数据结构维护以下几种操作:

  1. 加边.

  2. 将某个点到根的路径修改。

  3. 单点查询。

我们做出来的新树中某个点到根的路径在原树中就是一条链。

所以其实我们可以忽视这个动态加边,只需用并查集维护根节点即可。

对于 \(2,3\) 操作,树剖肯定会超时,所以我们考虑树上差分。

查询时,只需查询这个点子树内所有点权和。这样就可以 \(dfs\) 序 + 树状数组维护即可。


code

随机推荐

  1. element-ui多选(批量)删除

    导出axios请求

  2. 第六課-Channel Study For TCP Listener & HTTP Listener & Web Service Listener About Response Handler

    经过前面章节的课程,对Mirth Connect在系统集成与数据交互中的使用有了一个大概的了解:大家一定有个疑惑,Mirth Connect如何组织响应消息并返回给调用者?今天我们就来继续深入讲解Re ...

  3. 模型代码联动难? BizWorks来助力

    简介: 本文介绍了业务模型设计和实现保持一致的重要性以及实际落地可能遇到的问题,以及BizWorks如何设计并提供一种双向联动能力, 通过BizWorks Toolkit(IDE 插件) 来解决和优化 ...

  4. 技术解读 | 智能开放搜索CTR预估模型

    ​简介:本文介绍开放搜索CTR预估模型在个性化排序中的应用与实践 如何评价搜索排序效果? 搜索是用户触达信息最简单直接的方式,是APP.网页必备的功能.如何评价并提升搜索效果一直是搜索领域的常见问题. ...

  5. 好云推荐官丨飞天加速之星怎样选择云服务器ECS?

    ​编者按:本文来自"好云推荐官"活动的技术博主投稿,作者(昵称天狼)曾入选首届"飞天加速之星",获得飞天人气奖. ​你是否还在苦苦地寻找一家合适的云厂商,寻找合 ...

  6. 外部工具连接SaaS模式云数据仓库MaxCompute实战——商业BI分析工具篇

    简介: MaxCompute 是面向分析的企业级 SaaS 模式云数据仓库,以 Serverless 架构提供快速.全托管的在线数据仓库服务,消除了传统数据平台在资源扩展性和弹性方面的限制,最小化用户 ...

  7. GRPC: 如何优雅关闭进程(graceful shutdown)

    ​简介: 本文将介绍优雅关闭 gRPC 微服务.在进程收到关闭信号时,我们需要关闭后台运行的逻辑,比如,MySQL 连接等等. 介绍 本文将介绍优雅关闭 gRPC 微服务. 什么是优雅关闭? 在进程收 ...

  8. [Go] Golang并发控制: WaitGroup 含义和常规用法

    一个 WaitGroup 等待一个 goroutine 集合的结束. 主 goroutine 调用 Add 设置需要等待的 goroutine 数量. 接下来每个 goroutine 运行并在结束时调 ...

  9. WPF 已知问题 在 ObservableCollection 的 CollectionChanged 修改集合内容将让 UI 显示错误

    本文记录一个 WPF 已知问题,在 ObservableCollection 的 CollectionChanged 事件里面,绕过 ObservableCollection 的异常判断逻辑,强行修改 ...

  10. C#的基于.net framework的Dll模块编程(四) - 编程手把手系列文章

    这次继续这个系列的介绍: 一.命名空间的起名: 对于C#来说,一般命名空间的建议是:公司名(或个人名称).产品名.分类名,比如我这边是用的这个:Lzhdim.LPF.Helper,意思是个人名Lzhd ...