Leetcode 3067. Count Pairs of Connectable Servers in a Weighted Tree Network

  • Leetcode 3067. Count Pairs of Connectable Servers in a Weighted Tree Network
    • 1. 解題思路
    • 2. 代碼實現
  • 題目鏈接:3067. Count Pairs of Connectable Servers in a Weighted Tree Network

1. 解題思路

這一題沒想到什么好的方法,走的是暴力求解的路子。

整體的思路上其實還是比較直接的,就是考察所有的節點作為根節點時的單項路徑,然后篩選出其中所有的和可以被signalSpeed整除的路徑數目,最后求一下兩兩組合的對數即可。

其中,前者可以通過一個深度優先遍歷進行實現;而后者事實上就是如下公式:

s = ∑ i < j x i ? x j = 1 2 ? ∑ i x i ? ( ∑ j ≠ i x j ) = 1 2 ? ∑ i x i ? ( ∑ j x j ? x i ) \begin{aligned} s &= \sum\limits_{i < j} x_i \cdot x_j \\ &= \frac{1}{2} \cdot \sum\limits_{i} x_i \cdot (\sum\limits_{j \neq i} x_j) \\ &= \frac{1}{2} \cdot \sum\limits_{i} x_i \cdot (\sum\limits_{j} x_j - x_i) \end{aligned} s?=i<j?xi??xj?=21??i?xi??(j=i?xj?)=21??i?xi??(j?xj??xi?)?

因此,我們通過一重循環就能夠快速地得到對應的答案。

2. 代碼實現

給出python代碼實現如下:

class Solution:def countPairsOfConnectableServers(self, edges: List[List[int]], signalSpeed: int) -> List[int]:n = len(edges)+1graph = defaultdict(list)for u, v, w in edges:graph[u].append((v, w))graph[v].append((u, w))@lru_cache(None)def dfs(u, pre, distance):ans =  1 if distance == 0 else 0for v, w in graph[u]:if v == pre:continueans += dfs(v, u, (distance + w) % signalSpeed)return ansdef count_connectable(u):cnt = [dfs(v, u, w % signalSpeed) for v, w in graph[u]]s = sum(cnt)ans = sum([x * (s-x) for x in cnt]) // 2return ansreturn [count_connectable(u) for u in range(n)] 

提交代碼評測得到:耗時292ms,占用內存38.7MB。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/719371.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/719371.shtml
英文地址,請注明出處:http://en.pswp.cn/news/719371.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

xss.haozi.me:0x07

<img src1 onerroralert(1)

Spring MVC ThemeResolver原理解析

在Spring MVC框架中&#xff0c;ThemeResolver&#xff08;主題解析器&#xff09;是一個重要但經常被忽視的組件。它負責解析和管理Web應用程序中的主題設置&#xff0c;允許用戶根據不同的需求和偏好切換界面主題。ThemeResolver為開發者提供了一種靈活的方式來控制應用程序的…

tomcat下載安裝配置教程

tomcat下載安裝配置教程 我是使用tomcat下載安裝及配置教程_tomcat安裝-CSDN博客 此貼來進行安裝配置&#xff0c;原文21年已經有些許不同。 下載tomcat 官網&#xff1a;http://tomcat.apache.org/ 我們老師讓安裝8.5以上&#xff0c;所以我直接選擇版本9 點擊9頁面之后…

DPDK常用API合集三

librte_timer 此庫為 DPDK 執行單元提供定時器服務&#xff0c;提供異步執行函數的能力。它可以是周期性的函數調用&#xff0c;也可以是一次性調用。它使用環境抽象層&#xff08;EAL&#xff09;提供的定時器接口獲取精確的時間參考&#xff0c;并可以根據需要以每個核心為基…

2024.03.03藍橋云課筆記——排序

sort簡介 #include<algorithm> 使用的是快速排序 時間復雜度為O(nlogn) sort使用(默認是從小到大) 1.sort(起始地址&#xff0c;結束地址的下一位&#xff0c;*比較函數&#xff09;&#xff1b; #include<iostream> #include<algorithm> using namesp…

HTTPS的實現原理

圖片來源&#xff1a;HTTPS 詳解一&#xff1a;附帶最精美詳盡的 HTTPS 原理圖 - 個人文章 - SegmentFault 思否 加密流程按圖中的序號分為&#xff1a; 客戶端請求 HTTPS 網址&#xff0c;然后連接到 server 的 443 端口 (HTTPS 默認端口&#xff0c;類似于 HTTP 的80端口)。…

Windows批處理:bat文件學習

目錄 第一章、快速了解Windows批處理1.1&#xff09;Windows批處理相關概念介紹1.1.1&#xff09;批處理的起源1.1.2&#xff09;bat文件介紹 1.2&#xff09;Demo1.2.1&#xff09;創建文件添加命令1.2.2&#xff09;bat腳本中的命令解釋 第二章、實例2.1&#xff09;點擊bat文…

navicat安裝11.3

一、安裝navicat 1、下載navicat 2、解壓壓縮包 3、點擊exe文件 4、輸入密鑰&#xff1a; NAVH-WK6A-DMVK-DKW3 5、點擊打開&#xff1a; 輸入連接參數&#xff1a; 6、查看連接好倉庫 7、 在使用navicat來編寫sql語句 8、編寫語句 連接不上問題&#xff0c;檢查問題&#…

[出錯]-RuntimeError: “slow_conv_transpose2d_out_cpu“ not implemented for ‘Byte‘

一開始我一直一維是torch版本的問題 輸入是用cv2讀出來的&#xff0c;數據類型dtype是默認是unit8&#xff0c;輸入到模型中&#xff0c;除了要將他轉為tenso以外&#xff0c;還要.float將數據類型轉為浮點數。

【Vue3】深入理解Vue中的ref屬性

&#x1f497;&#x1f497;&#x1f497;歡迎來到我的博客&#xff0c;你將找到有關如何使用技術解決問題的文章&#xff0c;也會找到某個技術的學習路線。無論你是何種職業&#xff0c;我都希望我的博客對你有所幫助。最后不要忘記訂閱我的博客以獲取最新文章&#xff0c;也歡…

Redis 之三:Redis 的發布訂閱(pub/sub)

概念介紹 Redis 發布訂閱 (pub/sub) 是一種消息通信模式&#xff0c;它允許客戶端之間進行異步的消息傳遞 Redis 客戶端可以訂閱任意數量的頻道。 模型中的角色 在該模型中&#xff0c;有三種角色&#xff1a; 發布者&#xff08;Publisher&#xff09;&#xff1a;負責發送信…

嵌入式中7個底層數據結構分解

在編程的世界里&#xff0c;數據結構是構建信息框架的骨架。就像現實生活中的建筑需要精心設計的結構一樣&#xff0c;我們的數據也需要合適的結構來保證程序的高效和穩定。今天&#xff0c;我們就像探險家一樣&#xff0c;一起去探索七大數據結構的奧秘&#xff0c;并揭開它們…

光路科技:工業以太網交換機引領工業互聯網新篇章

隨著全球范圍內工業4.0的浪潮不斷涌動&#xff0c;工業互聯網作為其核心驅動力&#xff0c;正引領著工業生產向智能化、網絡化的嶄新階段邁進。在這一轉型的浪潮中&#xff0c;光路科技憑借其卓越的工業互聯設備與創新解決方案&#xff0c;正為工業互聯網領域的發展注入新的活力…

Linux環境基礎開發工具使用

目錄 1.Linux軟件包管理器yum 什么是軟件包 關于 lrzsz 查看軟件包 2.Linux開發工具 2.1.vim的基本概念 2.2vim的基本操作 2.3vim命令模式命令集 1.插入模式 2.從插入模式切換為命令模式 3.移動光標 4.刪除文字 5.復制 6.替換 7.撤銷上一次的操作 8.更改 2.4v…

藍橋杯 2020 第一輪省賽 A 組 F 題(B 組 G 題)解碼

藍橋杯 2020 第一輪省賽 A 組 F 題&#xff08;B 組 G 題&#xff09;解碼 題目描述 小明有一串很長的英文字母&#xff0c;可能包含大寫和小寫。 在這串字母中&#xff0c;有很多連續的是重復的。小明想了一個辦法將這串字母表達得更短&#xff1a;將連續的幾個相同字母寫成…

[動態規劃]---part1

前言 作者&#xff1a;小蝸牛向前沖 專欄&#xff1a;小蝸牛算法之路 專欄介紹&#xff1a;"蝸牛之道&#xff0c;攀登大廠高峰&#xff0c;讓我們攜手學習算法。在這個專欄中&#xff0c;將涵蓋動態規劃、貪心算法、回溯等高階技巧&#xff0c;不定期為你奉上基礎數據結構…

Java基礎 - 模擬醫院掛號系統

模擬醫院掛號系統功能 1. 科室管理:新增科室,刪除科室(如果有醫生在,則不能刪除該科室),修改科室 2. 醫生管理:錄入醫生信息以及科室信息,修改醫生信息(主要是修改個人信息和科室) 3. 坐診信息設置:可以設置醫生當天和未來6天的坐診情況,包括上午和下午的坐診時…

Linux設備模型(九) - bus/device/device_driver/class

一&#xff0c;設備驅動模型 1&#xff0c;概述 在前面寫的驅動中&#xff0c;我們發現編寫驅動有個固定的模式只有往里面套代碼就可以了&#xff0c;它們之間的大致流程可以總結如下&#xff1a; 實現入口函數xxx_init()和卸載函數xxx_exit() 申請設備號 register_chrdev_r…

Spring源碼:手寫SpringDI

我們是在實現了SpringIOC的基礎上&#xff0c;進行拓展&#xff0c;IOC實現源碼可以查看&#xff1a;手寫SpringIOC 文章目錄 一、分析二、實現1、構造注入1&#xff09;分析2&#xff09;版本1BeanReferenceBeanDefinitionGenericBeanDefinitionDefaultBeanFactory1、改造構造…

install Ubuntu again

參考鏈接&#xff1a;Windows 下安裝 Ubuntu 雙系統(更新) - duan22677 - 博客園 這里的總的空間是120G 它里面指出雙系統的時候&#xff0c;/boot 應該是主分區 參考鏈接&#xff1a;win10下安裝Ubuntu16.04雙系統_windows10安裝引導ubuntu-CSDN博客 這里面講到了&#xf…