Kimi    LeetCode LCP 16. 游乐园的游览计划 Python3实现
LCP 16. 游乐园的游览计划 — Python3 实现题目理解小吴计划上午和下午各游玩一个以重点项目 A 为中心的三角形路径A-B-C-A两个三角形至少共享一个顶点求最大喜爱值之和。本质上是在图中找两个三角形它们至少共享一个顶点使得所有不同顶点的权值和最大。核心思路1. 找所有三元环三角形由于点数和边数同级N \approx M三元环最多 O(N\sqrt{N}) 个。使用度数定向优化枚举- 按度数排序边从度数大的点指向度数小的点- 枚举每个点 u标记其邻居再枚举邻居 v 的邻居 k若 k 也是 u 的邻居则找到三元环 u-v-k2. 三角形拼接鸽笼原理优化对于每个顶点 v收集所有包含 v 的三元环。按权值排序后最优解一定涉及权值前3大的三元环之一鸽笼原理因此只需枚举前3个与所有其他三元环组合。Python3 代码pythonfrom typing import Listclass Solution:def maxWeight(self, edges: List[List[int]], value: List[int]) - int:n len(value)# 1. 计算度数deg [0] * nfor u, v in edges:deg[u] 1deg[v] 1# 2. 度数定向从度数大的指向度数小的度数相同则编号大的指向编号小的# 这样每个点的出度为 O(sqrt(M))g [[] for _ in range(n)]for u, v in edges:if deg[u] deg[v] or (deg[u] deg[v] and u v):g[u].append(v)else:g[v].append(u)# 3. 找所有三元环# triple[v] 存储包含顶点 v 的所有三元环用另外两点表示方便后续计算triple [[] for _ in range(n)]vis [0] * nfor u in range(n):# 标记 u 的所有邻居for v in g[u]:vis[v] u 1 # 用 u1 避免每次清空数组for v in g[u]:for k in g[v]:if vis[k] u 1: # k 也是 u 的邻居找到三元环 u-v-kw value[u] value[v] value[k]# 存储三元环的另外两点和权值triple[u].append((w, v, k))triple[v].append((w, u, k))triple[k].append((w, u, v))# 4. 对每个顶点的三元环按权值降序排序for i in range(n):triple[i].sort(reverseTrue)# 5. 计算两个三元环合并后的权值去重def calc(t1, t2):# t1, t2 格式: (w, a, b) 表示三元环包含当前顶点和 a, bs set()# 当前顶点在调用时已知这里只存另外两点# 实际需要根据上下文调整这里简化处理points [t1[1], t1[2], t2[1], t2[2]]# 加上当前顶点在枚举时处理return sum(value[p] for p in set(points))ans 0# 6. 枚举每个顶点作为连接点for v in range(n):m len(triple[v])if m 0:continue# 只枚举前3大的三元环鸽笼原理保证最优解在其中for i in range(min(3, m)):w1, a1, b1 triple[v][i]# 情况1只用一个三元环上午下午同一个ans max(ans, w1)# 情况2与所有其他三元环组合for j in range(m):if i j:continuew2, a2, b2 triple[v][j]# 计算并集权值去重points {v, a1, b1, a2, b2}total sum(value[p] for p in points)ans max(ans, total)return ans更优的 Python 实现参考官方题解优化版pythonfrom typing import Listimport heapqclass Solution:def maxWeight(self, edges: List[List[int]], value: List[int]) - int:n len(value)# 度数定向deg [0] * nfor u, v in edges:deg[u] 1deg[v] 1g [[] for _ in range(n)]for u, v in edges:if (deg[u], u) (deg[v], v):u, v v, ug[u].append(v)# 找三元环triple [[] for _ in range(n)]vis [0] * nfor u in range(n):for v in g[u]:vis[v] 1for v in g[u]:for k in g[v]:if vis[k]:# 找到三元环 u-v-kw value[u] value[v] value[k]triple[u].append((w, min(v, k), max(v, k)))triple[v].append((w, min(u, k), max(u, k)))triple[k].append((w, min(u, v), max(u, v)))for v in g[u]:vis[v] 0ans 0# 对每个顶点取前5大的三元环进行组合保证覆盖最优解for v in range(n):if not triple[v]:continue# 按权值降序取前5个triple[v].sort(reverseTrue)top triple[v][:5]# 枚举所有配对for i in range(len(top)):w1, a1, b1 top[i]ans max(ans, w1) # 单个三元环for j in range(i 1, len(top)):w2, a2, b2 top[j]# 计算并集权值points {v}for p in [a1, b1, a2, b2]:points.add(p)total sum(value[p] for p in points)ans max(ans, total)return ans复杂度分析- 时间复杂度O(N\sqrt{N})三元环枚举使用度数定向优化每个顶点只需处理前几个最优三元环- 空间复杂度O(N\sqrt{N})存储所有三元环关键要点1. 度数定向将无向边定向为从高度数点指向低度数点保证每个点出度为 O(\sqrt{M})从而三元环枚举复杂度控制在 O(N\sqrt{N})2. 鸽笼原理对每个顶点只需考虑权值最大的前3-5个三元环即可覆盖最优解3. 去重计算两个三角形合并时共享顶点只计算一次权值

相关新闻

【Python 入门】面向对象基础:类、对象、成员变量与构造方法

【Python 入门】面向对象基础:类、对象、成员变量与构造方法

文章目录前言一、面向对象思想入门二、类的定义:成员变量与成员方法2.1 基础语法2.2 self 关键字详解2.3 完整示例:学生类三、类与对象的示例:闹钟类四、构造方法 __init__4.1 为什么需要构造方法4.2 基础用法4.3 注意事项五、入门易错点总结…

2026/8/23 6:56:37 阅读更多 →
多智能体系统运行时置信度校准:从静态评估到动态协同的MARGIN框架解析

多智能体系统运行时置信度校准:从静态评估到动态协同的MARGIN框架解析

1. 从“各自为战”到“协同作战”:多智能体协作的置信度难题在AI领域,尤其是大模型驱动的多智能体系统里,我们正面临一个从“单兵作战”到“集团军协同”的范式转变。想象一下,你手头有几个顶尖的专家模型:一个擅长文本…

2026/8/23 6:56:37 阅读更多 →
SAP资产会计核心:资产购置流程与资产价值日深度解析

SAP资产会计核心:资产购置流程与资产价值日深度解析

如果你在SAP系统中处理固定资产,是否曾遇到过这样的困惑:明明资产已经采购到货,财务却无法及时入账?或者资产价值在系统中“飘忽不定”,导致月度折旧计算总是对不上?这些问题的根源,往往不在于操…

2026/8/23 6:56:37 阅读更多 →

最新新闻

华为ENSP网络仿真工具安装与排错全指南:从VLAN实验到替代方案

华为ENSP网络仿真工具安装与排错全指南:从VLAN实验到替代方案

1. 先搞清楚 ENSP 到底是什么,以及它现在还能不能用如果你正在准备网络工程师认证,或者需要模拟华为网络设备来做实验,那你大概率绕不开 ENSP 这个名字。ENSP,全称是 Enterprise Network Simulation Platform,是华为官…

2026/8/23 7:39:49 阅读更多 →
卡方检验原理与实战:从拟合优度到独立性检验的多语言实现

卡方检验原理与实战:从拟合优度到独立性检验的多语言实现

1. 卡方分布:从理论到实战的桥梁在数据建模和统计分析的世界里,我们经常需要判断一个样本是否服从某个理论分布,或者检验两个分类变量之间是否存在关联。比如,工厂质检员想知道一批产品的次品率是否与生产线有关,市场分…

2026/8/23 7:39:49 阅读更多 →
Angular7,9,学习笔记一 创建项目,基本语法

Angular7,9,学习笔记一 创建项目,基本语法

1.创建项目2.目录结构3.app4.创建组件5.语法5.1绑定属性5.2绑定html5.3.ngFor循环数据5.4.引入图片5.5条件判断5.6样式5.7管道5.8事件5.9.表单1.10双向数据绑定,只是针对表单在中引入

2026/8/23 7:39:49 阅读更多 →
Mac Studio本地部署120B大模型实战:低成本私有AI开发环境搭建

Mac Studio本地部署120B大模型实战:低成本私有AI开发环境搭建

在Mac Studio上本地部署一个120B参数的大语言模型,听起来像是技术极客的“炫技”行为,还是真的具备实用价值?当“大模型部署”成为开发者圈子的热门话题,我们听到的往往是“需要多张A100/H100”、“显存动辄上百GB”、“电费惊人”…

2026/8/23 7:39:49 阅读更多 →
C++可变参类模板:从递归特化到类型安全容器的实现

C++可变参类模板:从递归特化到类型安全容器的实现

1. 从“万能容器”到“类型安全的参数打包”:可变参类模板的动机在C模板编程的日常里,我们经常会遇到一个经典需求:设计一个能容纳任意数量、任意类型数据的容器或工具类。你可能会立刻想到std::tuple,它确实是一个完美的解决方案…

2026/8/23 7:39:49 阅读更多 →
哈希表平均查找长度计算:拉链法、线性探测与平方探测实战解析

哈希表平均查找长度计算:拉链法、线性探测与平方探测实战解析

1. 项目概述:从“平均查找长度”说起在数据结构与算法的世界里,我们经常需要评估一个查找算法的效率。当面试官问你“哈希表的平均查找长度怎么算?”,或者你在优化一个高频查询的缓存系统时,一个核心的量化指标就会浮出…

2026/8/23 7:38:48 阅读更多 →

日新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/23 0:00:50 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/23 0:00:50 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/23 0:00:50 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/23 0:00:50 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/23 0:00:50 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/23 0:00:50 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/22 18:08:39 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/22 7:31:03 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/22 3:22:48 阅读更多 →