[51Nod 1558] 树中的配对

news/2025/3/4 19:11:32/文章来源:https://www.cnblogs.com/YzaCsp/p/18751187

前言

这能不会, 这能不会, 这能不会???
做了一会之后, 感觉确实可以不会

思路

题意

带权树
求一组排列 pp 使得 dis(i,pi)max\textrm{dis} (i, p_i) \to \max

结论

一条边最多的经过次数就是其连接的两部分中较小的那一个

证明方法 \(1\)

调整法
首先点对初始化为 \(\{i, i\}\)
可以任意交换点对之间的第二个元素

对于一条边, 如果其两个部分中, 其中一个部分出现了点对两元素都在同一部分, 那么另外一个部分必然出现点对两元素都在同一部分, 交换这两个点对的第二个元素一定更优, 不难发现最终必然对于每条边都不存在可以交换的点对两元素都在同一部分, 因此这样最优

证明方法 \(2\)

构造法
发现点对 \(\{i, p_i\}, \{j, p_j\}\) 不交, 可以交换 \(p_i, p_j\) 使答案更大
不难发现任意两点对 \(\{i, p_i\}\) 有交

不难发现所有点对路径拥有公共点, 画图证明
pEJFWYq.png
任意不存在公共点的路径必然成环

考虑什么样的点可以作为公共点, 这样我们可以简单地通过

\[\begin{align*} \sum \textrm{dis}(i, p_i) &= \sum \Big(\textrm{dep}_i + \textrm{dep}_{p_i} - 2\textrm{dep}_{\textrm{LCA}(i, p_i)}\Big) \\ &= \boxed{2\sum \textrm{dep}_i} - 2\sum \textrm{dep}_{\textrm{LCA}(i, p_i)} \end{align*}\]

求出答案最值

不妨记这个点为 \(u\)
不难发现重心是 \(u\) 的一个好的选择

不难发现, 如果令 \(u\) 为重心, 把子树按照大小从大到小排序
那么从大小大的到大小小的处理, 每次贪心的用更大的子树连向自己, 这样一定可以构造出合法解

发现这样的解恰好可以使得答案满足性质

总结

树上常见的拆距离方式

调整法常用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/893555.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序快递代理新手必看:3种方法轻松上手

很多朋友都在问我,如何开始快递代理业务。其实,这个兼职工作门槛很低,只要你有空闲时间,就能开始赚钱。下面我给大家分享一下具体的操作方法。 首先可以让客服帮你搭建小程序,这样推广就可以自助让客户下单,是需要推广!以后客户用了就能一直下单获取持续收益了。 快递代…

2025.03.04 CW 模拟赛 A. 树

题面 A. 树 思路 先说结论, 每条边的贡献次数等于其左右两侧子树大小的最小值. 证明#include "iostream" #include "vector"using namespace std;typedef pair<int, int> pii; typedef long long ll;constexpr int N = 2e5 + 10;int n, sz[N]; ll an…

【python免杀】CS免杀+浅谈Python静态免杀

本文我们再来看看利用python进行静态免杀吧! 先用CS生成 shellcode 把shellcode进行加密放在里面并存放到服务器。 python BS64 shellcode.txt这里为了方便,我们直接放到了kali的apache目录下。 并启动Apache service apache2 start修改加载器的服务器地址后进行一次BS64加密…

【python免杀】浅谈Python静态免杀

本文我们再来看看利用python进行静态免杀吧! 先用CS生成 shellcode 把shellcode进行加密放在里面并存放到服务器。 python BS64 shellcode.txt这里为了方便,我们直接放到了kali的apache目录下。 并启动Apache service apache2 start修改加载器的服务器地址后进行一次BS64加密…

c#桌面winform通过wps调用power point文件播放,播放完立刻退出不留痕迹

c#桌面winform通过wps调用power point文件播放,播放完立刻退出,不留痕迹.c#桌面winform通过wps调用power point文件播放,播放完立刻退出,不留痕迹. 以前一直用微软的office那个interop,愁死了,版本动不动就不对,加上国产化要求,干脆研究了一下换成wps office。原创,转…

【红队武器库】一些C2的隐藏方法记录

介绍 C2是指网络攻击者使用的一种基础架构,用于远程控制受感染的计算机或网络。攻击者可以通过C2系统发送命令和指令,控制受感染的计算机执行各种活动。本文将记录几种隐藏C2的方法。 使用CDN 1、在 (https://www.freenom.com) 注册一个免费域名,并将其绑定到您的 VPS 地址上…

阿里云可观测 2025 年 2 月产品动态

阿里云可观测 2025 年 2 月产品动态

c# 托管堆和垃圾回收的clr的优化

前言 上一章介绍了基本垃圾回收的思路,那么看一下怎么回收的性能提高 正文 优化性能的手段,一般是找到事物的特征,然后利用这种特征进行优化。对象越新,生存期越短。对象越老,生存期越长。回收堆的一部分,速度快于回收整个堆。托管堆在初始化时不包含对象。添加到堆的对象…

HTTP 隧道工具上线C2

前言 太多时候遇到目标不出网了,TCP、ICMP、DNS协议均不通,无法直接与公网的cobaltstrike或者metasploit服务端建立连接。 只能搭建HTTP隧道,那能通过HTTP隧道上线cobaltstrike或者metasploit吗❓ pystinger [1] 就可以做到,那除此之外呢❓ 接下来,我们探究一下其他HTTP隧…

【权限维持技术】Windows文件隐藏(二)

免责声明 本文仅用于技术讨论与学习,利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者及本公众号不为此承担任何责任。NTFS数据流 “交替数据流(Alternate Data Streams, ADS)”是Windows NTFS文件系统的高级特性。文件中可以包含多…

UML之参与者(Actor)

参与者是需求分析阶段的重要元素,指与待开发系统交互的外部实体,包括人、外部系统、传感器、数据库等。识别参与者需注意区分真正的参与者和传递型参与者。参与者通常用小人图像表示,在UML用例图中与用例通过关联线连接。参与者(Actor)是模型中非常重要的元素,识别参与者…