leetcode 404周赛 合并两棵树后最小直径「图论」「dp」

3203. 合并两棵树后的最小直径

题目描述:

题如其意,给你两棵树,你可以从两棵树中各挑一个点出来,连一条边,形成一个新的树,问你最小直径是多少

  • 1 < = n , m < = 1 0 5 1 <= n, m <= 10^5 1<=n,m<=105

思路:

打力扣还是先观察一下数据范围的提示,发现给的两棵树的下标都是从0开始,所以正解可能不希望你把两棵树真正合并成一棵树做

选的点肯定在直径上,且是直径的中点

设a,b分别是两棵树的直径长度,则答案有三种情况:

  • 第一棵树的直径很长,连边后新树的直径仍未第一棵树的直径,答案是a
  • 第二棵树的直径很长,连边后新树的直径仍未第二棵树的直径,答案是b
  • 新树的直径经过刚添加的边,则答案是 ⌈ a 2 ⌉ + ⌈ b 2 ⌉ + 1 \lceil{\frac{a}{2}} \rceil+\lceil{\frac{b}{2}}\rceil + 1 2a+2b+1
class Solution {
public:int fuck(vector<vector<int>>& g){vector<vector<int>>G(g.size() + 1);for(auto x : g){G[x[0]].push_back(x[1]);G[x[1]].push_back(x[0]);}int ans = 0;auto dfs = [&](auto && dfs, int x, int fa) -> int{int maxn = 0;for(auto y : G[x]){if(y == fa)continue;int res = dfs(dfs, y, x) + 1;ans = max(ans, res + maxn);maxn = max(maxn, res);}return maxn;};dfs(dfs, 0, -1);return ans;}int minimumDiameterAfterMerge(vector<vector<int>>& G1, vector<vector<int>>& G2) {int a = fuck(G1), b = fuck(G2);int ans = max(max(a, b), (a+1) / 2 + (b + 1) / 2 + 1);return ans;}
};

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

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

相关文章

PDM系统中物料分类与编码规则生成方案

在企业管理软件中&#xff0c;PDM系统是企业管理的前端软件&#xff0c;用于管理研发图纸、BOM等数据&#xff0c;然后生成相关物料表或BOM&#xff0c;递交给后端ERP系统进行生产管理。在PDM系统中&#xff0c;有两种方式可以生成物料编码。 1第一种是用户可以通过软件接口将…

基于selenium+python实现自动化测试

Selenium 是一个用于自动化Web应用程序测试的工具包&#xff0c;它提供了一套API&#xff0c;允许开发者编写脚本来模拟用户与浏览器的交互。这些API可以控制浏览器执行各种操作&#xff0c;如导航、点击、输入文本、滚动页面等。使用Selenium结合Python进行自动化测试是一个常…

汽车免拆诊断案例 | 2021款路虎揽胜运动版车遥控及一键起动功能失效

故障现象 一辆2021款路虎揽胜运动版车&#xff0c;搭载AJ20-P6H3L发动机&#xff0c;累计行驶里程约为2.5万km。车主反映&#xff0c;使用智能钥匙无法解锁车门&#xff0c;使用机械钥匙打开车门&#xff0c;进入车内&#xff0c;发现一键起动功能也失效&#xff1b;根据组合…

将excel表格转换为element table(下)

在‘将excel表格转换为element table(上)’我们把excel 转换后通过数据重构绑定到了element table上&#xff0c;现在要做的就是根据源文件进行行列进行合并操作 先看看最终处理的结果 这里在一步步分析实现步骤。 先分析一下合并的逻辑 大致思路理理如上。 思路有了接下来…

回溯法:生成一个字符串的所有排列组合

问题&#xff1a;字符串abcd怎样获取abcd、acbd、acdb、adbc、adcb、bacd、bcad、bdac、bdca、cabd、cdba、cadb、cbda等&#xff0c;所有排列。 使用回溯法来生成一个字符串的所有排列 import java.util.ArrayList; import java.util.List;public class Permutations {publi…

雷诺RENAULT EDI 需求分析

雷诺&#xff08;Renault&#xff09;是一家法国汽车制造公司&#xff0c;成立于1899年。作为世界知名的汽车品牌&#xff0c;雷诺生产各种类型的车辆&#xff0c;包括乘用车、商用车和电动车。公司总部位于法国布洛涅-比扬古。雷诺以其创新和高质量的产品在全球市场享有盛誉&a…

3-数据提取方法1(json)(6节课学会爬虫)

3-数据提取方法1&#xff08;json&#xff09;&#xff08;6节课学会爬虫&#xff09; 1&#xff0c;Json2&#xff0c;哪里会返回json的数据&#xff08;值得尝试的操作&#xff09;3&#xff0c;Json字符串转换成字典或python类型进行数据提取&#xff08;1&#xff09;Json.…

农夫山泉:玩一个“弯道超车”的“新游戏”

今年夏天&#xff0c;有一款产品的爆火&#xff0c;仿佛上演了一出“欧亨利式”的好戏&#xff0c;既出人意料又在情理之中。它就是农夫山泉的“冰杯”。 在小红书搜索关键词“冰杯”后&#xff0c;我们会发现&#xff0c;相关笔记达到4万篇&#xff0c;相关商品超过8000件&am…

基于改进滑模、经典滑模、最优滑模控制的永磁同步电机调速系统MATLAB仿真

微❤关注“电气仔推送”获得资料&#xff08;专享优惠&#xff09; 模型简介 针对永磁同步电机调速系统的响应性能和抗干扰能力问题&#xff0c;本文做了四个仿真&#xff0c;分别为&#xff1a;永磁同步电机的PID控制调速系统、基于传统滑模控制的永磁同步电机的调速系统、最…

文件存储(阿里云OSS)的实现

简介 文件包括&#xff1a;视频、音频、图片等。我们一般在开发的过程中&#xff0c;会将文件存储在本地&#xff0c;但是这种情况下会遇到性能的瓶颈、磁盘爆满等问题。那么我们就需要给文件重新找一个存储的位置就是云上。此篇介绍阿里云的文件存储的实现 1、阿里云对象存储…

Spring Data JPA:全面指南

在现代 Java 开发中&#xff0c;数据持久化是一个关键环节。Spring Data JPA 为我们提供了一种简单而强大的方式来处理数据持久化操作。在这篇文章中&#xff0c;我们将详细介绍 Spring Data JPA 的基础知识、配置方法、使用 JpaRepository 进行 CRUD 操作&#xff0c;以及自定…

Mybatis入门の基础操作

1 Mybatis概述 MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解&#xff0c;将接口和 Java 的 POJOs(Plain Old Java Objects,普通的…

# mysql 中文乱码问题分析

mysql 中文乱码问题分析 一、问题分析&#xff1a; MySQL 中文乱码通常是因为字符集设置不正确导致的。MySQL 有多种字符集&#xff0c;如 latin1、utf8、utf8mb4 等&#xff0c;如果在创建数据库、数据表或者字段时没有指定正确的字符集&#xff0c;或者在插入数据时使用了与…

Go语言特点、编译及命令

本文主要分为三部分内容分别为&#xff1a;Go语言的特点介绍&#xff1b;编译windows、linux环境文件及Go命令。 目录 Go语言特点 编译文件 编译window文件 编译linux文件 Go命令&#xff08;build/run/install/env&#xff09; 编译文件 直接运行程序 安装程序 配置G…

互联网摸鱼日报(2024-07-04)

互联网摸鱼日报(2024-07-04) 36氪新闻 用AI创造元宇宙&#xff0c;Meta发布最强3D素材生成模型&#xff0c;一分钟创造一个世界 比肩Sora&#xff01;视频模型王者Gen-3回归&#xff0c;能表现人类复杂感情&#xff0c;但不理解物理世界 中国半导体设备市场要力挽狂澜 超3亿…

Postman 高级用法学习

Postman 高级用法 Postman 是一款强大的 API 调试和开发工具&#xff0c;广泛应用于 API 开发、测试、调试和自动化流程中。除了基本的 API 请求发送和响应查看功能&#xff0c;Postman 还提供了许多高级功能。以下是详细的讲解&#xff0c;包括具体示例和操作步骤。 一、环境…

探索金融数据API:现代投资的关键工具

在当今快节奏的金融市场中&#xff0c;实时准确的数据对于投资者而言至关重要。金融数据API&#xff08;Application Programming Interface&#xff09;成为了投资者获取和管理数据的核心工具。本文将探讨金融数据API的基本概念、用途及其对投资策略的影响。 什么是金融数据A…

PG实践|内置函数之GENERATE_SERIES之深入理解(二)

&#x1f4eb; 作者简介&#xff1a;「六月暴雪飞梨花」&#xff0c;专注于研究Java&#xff0c;就职于科技型公司后端工程师 &#x1f3c6; 近期荣誉&#xff1a;华为云云享专家、阿里云专家博主、腾讯云优秀创作者、ACDU成员 &#x1f525; 三连支持&#xff1a;欢迎 ❤️关注…

#LinuxC高级 笔记二

makefile gcc gdb makefile 1. 分文件编程 1.1 源文件&#xff1a;.c结尾的文件 包含main函数的.c 包含子函数的.c 1.2 头文件&#xff1a;.h结尾的文件 头文件、宏定义、typedef 、结构体、共用体、枚举、函数声明 include引用时“”和<>的区别&#xff1a; <>去系…

Java:JDK、JRE和JVM 三者关系

文章目录 一、JDK是什么二、JRE是什么三、JDK、JRE和JVM的关系 一、JDK是什么 JDK&#xff08;Java Development Kit&#xff09;&#xff1a;Java开发工具包 JRE&#xff1a;Java运行时环境开发工具&#xff1a;javac&#xff08;编译工具&#xff09;、java&#xff08;运行…