当前位置: 首页 > news >正文

T2

我个蒟蒻赛时连 T1 都没切,但是这个 T2 真的很水啊。

$$\texttt{Solution}$$

难度不高,爆想了 10 分钟有了一个贪心的思路,来看这张图理解一下:
屏幕截图 2025-09-28 091717
这就是一个比较简单的例子,我们考虑从它推演到一般情况。

因为需要从首都出发经过所有的城市,所以当我们去到 \(2\) 号城市又想去 \(3\) 号城市时,我们必须要先回到首都才能重新去到 \(3\) 号城市。因为这是一棵树,树上 \(2,3\) 两点是叶子结点,到了 \(2\) 必须先回到根才能到达 \(3\)。从 \(3\) 号结点到 \(4\) 号节点也同理。

题目里还说了一点:

最后不一定要返回根结点。

这说明我们最后可以停在一个结点

经过刚才的观察我们会发现,几乎所有到叶子结点的路径我们都要走两遍,因为如果我们要去到另一个未到达过得结点已经无路可走了,必须要绕回根结点再重新走。但是到最后一条路径时,我们已经走完了所有的点,不必再回头了。

那为了少走路,我们肯定会选择最长的那一条路径最后再走。那么就可以写出来了。


讲一下具体步骤:

  • 先跑一遍 dfs,用 \(dis\) 数组求出到叶子结点最长的那条路径和所有叶子结点。
  • 设答案一开始加上所有边权的两倍,然后减掉到叶子结点最长的那一条路径,输出即可。

讲个笑话:作者脑子抽了,一开始当成图论题了,以为要先求最小生成树再用最短路。后来发现本来就是树,就用我这个思路写的 dfs 加最短路。赛后才想起来树上的路径是唯一的,一遍 dfs 就可以解决啊!这都能过。

时间复杂度 \(O(n)\)

http://www.hskmm.com/?act=detail&tid=19724

相关文章:

  • 题解:CF1930I Counting Is Fun
  • AI百炼大模型接入钉钉,实现在群中免@交互式新闻推送
  • K8S-Service 学习
  • docker常用命令
  • 纸浆2511
  • electron38-admin桌面端后台|Electron38+Vue3+ElementPlus管理系统
  • 长江中游干流河道崩岸特征与机理研究综述
  • 基于 Python Keras 建立 猫狗图像的精准分类
  • 《ESP32-S3使用指南—IDF版 V1.6》第四十章 图片显示实验
  • 调度算法II
  • 鸿蒙应用开发从入门到实战(十六):线性布局案例
  • SQL注入流程
  • 完整的GLFW应用程序示例
  • 物理笔记
  • 基于Python+Vue开发的商城管理系统源码+运行步骤
  • HTML5-和-CSS3-迁移即时入门-全-
  • HTML5-多人游戏开发-全-
  • HTML5-地理位置即时操作指南-全-
  • 搭建环境
  • 20250928
  • Easysearch 国产替代 Elasticsearch:8 大核心挑战解读
  • Typescript概述和思维导图
  • 9-28
  • Qt结合ffmpeg代码实现udp推流/组播推流/rtp推流/监控GB28181推流/onvif推流
  • linux防火墙firewalld
  • 很多大公司为什么禁止在SpringBoot项目中使用Tomcat?
  • Java作业动手又动脑
  • PHP 开发者必须掌握的基本 Linux 命令
  • MetaGPT实战指南:构建模拟公司运营的多智能体系统 - 教程
  • Timeplus Enterprise 3.0 (Linux, macOS) - 流处理平台