P7897
第一道正经的 Ynoi,特此写篇题解纪念一下。
Algorithm 1
可以想到 \(O(nm)\) 的 DP。
我们定义 \(dp_u\) 为 \(u\) 子树内并包含 \(u\) 的连通点集,权值之和最大。
所以就有 DP 式啦!!
\]
Algorithm 2
我们需要考虑优化。
既然加上 \(dp_v\) 的条件为 \(dp_v \ge 0\)。那么我们可以把不符合这个条件 \(v\) 与他的父亲节点 \(u\) 的边删掉,到 \(dp_v \ge 0\) 时把 \(v\) 和 \(u\) 连起来。
所以我们的 DP 转移就变成了:
\]
如果我们把 \(x\) 从小到大排序,那么 \(dp_u\) 就一定是单调递增的。
所以 \(\max(0,dp_u)\) 是取 \(0\) 还是 \(dp_u\) 指只会变一次。
所以 \(u\) 与 \(v\) 的联通关系也只会改变一次。
所以我们如果可以的时候只需要在 \(dp_v\) 大于 \(0\) 时从 \(v\) 往上走,如果可以联通就连上。
此时我们需要计算 \((u,v)\) 这一条边在 \(x \ge\) 时联通。
所以我们就可以列出方程:
\]
解出 \(val \le \left \lceil \dfrac{-sum}{siz} \right \rceil\)。
其中 \(sum\) 为子树和,\(siz\) 为字数大小。
所以我们就可以把所有的 \(\left \lceil \dfrac{-sum}{siz} \right \rceil\) 扔到一个堆里。每次取出最小元素看是否小于等于当前的 \(x\),如果小于等于就修改。
所以我们只需要一个数据结构维护以下几种操作:
加边.
将某个点到根的路径修改。
单点查询。
我们做出来的新树中某个点到根的路径在原树中就是一条链。
所以其实我们可以忽视这个动态加边,只需用并查集维护根节点即可。
对于 \(2,3\) 操作,树剖肯定会超时,所以我们考虑树上差分。
查询时,只需查询这个点子树内所有点权和。这样就可以 \(dfs\) 序 + 树状数组维护即可。
随机推荐
- EasyCV DataHub 提供多领域视觉数据集下载,助力模型生产
简介: 在人工智能广泛应用的今天,深度学习技术已经在各行各业起到了重要的作用.在计算机视觉领域,深度学习技术在大多数场景已经替代了传统视觉方法.如果说深度学习是一项重要的生产工具,那么数据就是不可或缺 ...
- 阿里云荣获可信云容器安全能力先进级认证, ACK/ACR为企业级安全护航
阿里云关注企业级用户的Kubernetes生产落地痛点,结合企业生产环境的大量实践,全面帮助企业真正落地云原生架构.安全侧问题,是众多大中型或金融领域企业的核心关注点. 端到端云原生安全架构 早在20 ...
- 阿里巴巴云原生 etcd 服务集群管控优化实践
简介: 这些年,阿里云原生 etcd 服务发生了翻天覆地的变化,这篇文章主要分享一下 etcd 服务在面对业务量大规模增长下遇到的问题以及我们是如何解决的,希望对读者了解 etcd 的使用和管控运维提 ...
- Django之路由层、视图层、模板层介绍
一.Django请求生命周期 1.路由层urls.py Django 1.11版本 URLConf官方文档 1.1 urls.py配置基本格式 from django.conf.urls import ...
- juc之ConcurrentHashMap在我工作中的实践
Map是我工作中应用比较多的数据结构之一,主要用来存储一些kv的映射信息,如果是单线程环境下我会优先使用HashMap,但是如果在多线程环境下继续使用HashMap我不确定会不会被我老大打死,为了生命 ...
- vue路由跳转的三种方式
目录 1.router-link [实现跳转最简单的方法] 2.this.$router.push({ path:'/user'}) 3.this.$router.replace{path:'/' } ...
- ruby后台传变量到前端的JS里
后端变量 @namelist 前端解释 var result_json = <%= @namelist.to_json.html_safe %>
- nim 7. nimble--制作包
1. nim的包管理工具: nimble nim的包管理工具,是nimble. 在安装nim的时候,已经自带了nimble. nible通常需要使用git服务器存储包,因此,本地需要git命令的支持. ...
- SQL如何删除所有字段都相同的重复数据?
SQL Server数据库:有时候在处理数据时会遇到不加主键的表,导致数据表内出现了一模一样的数据,刚开始第一时间想到的方式是,把两条数据全部删除,然后再插入一条,但是这种可能数据量比较少的话,还可以 ...
- UE4 InstancedStaticMesh使用
在绘制大批量近似模型时,Unity有GPU Instancing(https://www.cnblogs.com/hont/p/7143626.html),而UE中有 HISM和ISM(Instanc ...