[ARC103D] Distance Sums
这题真的好妙啊
其实这道题与正解有关的提示信息几乎没有。
我们会发现若干条小的性质,但实际上只有一个关键的信息决定了 这棵树的唯一形态 。(其实我们可以猜这棵树是唯一的,因为 D i D_i Di 互不相同,然后,我们尝试还原它)
众所周知,如果每个节点的父亲是唯一确定的话,最终树的形态也是唯一确定的。我们的 task 就是 重复把一颗完整的子树接到某一结点下面 。
我们来看一看这个过程
此时不难计算出
D
[
u
]
=
D
[
s
]
+
2
×
s
−
n
D[u]=D[s]+2\times s-n
D[u]=D[s]+2×s−n ,又因为
D
i
D_i
Di 互不相同所以对应唯一的节点
u
u
u ,此时
s
i
z
[
u
]
+
=
s
i
z
[
v
]
siz[u]+=siz[v]
siz[u]+=siz[v] 就相当于完成了嫁接的过程。
如何保证 s 的子树大小完整呢 ? 我们想到将 D i D_i Di 从大到小排序,这样 叶节点总是被先处理 。
最后别忘记检验。
总结:如果对这道题进行反思的话,难点在于思考的方向,我们在实际做题时总是小鹿乱撞,想不到正确的构造方法,此时的努力也只能是南辕北辙。以及本题对于父子关系的考察,通过子树的大小确定唯一的父亲,都是本题的难点。
__EOF__

本文链接:https://www.cnblogs.com/cqbzly/p/17530151.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」