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.pswp.cn/web/39398.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/39398.shtml
英文地址,請注明出處:http://en.pswp.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;運行…