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

Leetcode 3547. Maximum Sum of Edge Values in a Graph

  • Leetcode 3547. Maximum Sum of Edge Values in a Graph
    • 1. 解题思路
    • 2. 代码实现
  • 题目链接:3547. Maximum Sum of Edge Values in a Graph

1. 解题思路

这一题主要是在问题的分析上面。由题意易知,事实上给定的图必然只可能存在三种可能的结构:

  • 孤立的点
  • 链状结构
  • 环状结构

其中,孤立的点必然不会有贡献,可以直接忽略,我们只需要考察环状结构和链状结构。

其中,对于环状结构,其长度事实上没有影响,任何一个元素无论放在何等长度的环上面其贡献都是一致的,因为它只与其相邻元素相关。而要想要其贡献最大化,其最合适的结构必然是以最大元素为中心,然后分别向左右逐一辐射。

而对于链状结构,其构造方式和环状结构差不多,但是其首尾不相连,因此必然浪费了一次乘积结果,因此,我们应该使得两侧的元素越小越好。

综上,最佳的构造方式就是:

  • 优先将大元素分配给环;
  • 对于链状结构,按长度从高到低依次进行元素分配。

此时,我们剩下的问题就是如何找环和链了。要找链,我们只需要找到度为1的节点即可,其必为链的一侧端点,然后进行遍历即可。而对于环,只需要在剩下的节点当中随意找一个节点作为起点即可。

2. 代码实现

给出python代码实现如下:

class Solution:def maxScore(self, n: int, edges: List[List[int]]) -> int:graph = defaultdict(list)for u, v in edges:graph[u].append(v)graph[v].append(u)nodes = [u for u in range(n) if len(graph[u]) == 1] + [u for u in range(n) if len(graph[u]) == 2]def get_max(m, k, is_circle):if k == 1:return 0nums = [m-i for i in range(k)]nums = nums[1::2][::-1] + nums[::2] ans = sum([nums[i] * nums[i+1] for i in range(k-1)])return ans if not is_circle else ans + nums[0] * nums[-1]ans = 0lines = []status = [0 for _ in range(n)]for i in nodes:if status[i] == 1:continueu = ilength = 0while status[u] == 0:status[u] = 1length += 1for v in graph[u]:if status[v] == 0:u = vbreakif i in graph[u] and length > 2:ans += get_max(n, length, True)n -= lengthelse:lines.append(length)lines = sorted(lines, reverse=True)for length in lines:ans += get_max(n, length, False)n -= lengthreturn ans

提交代码评测得到:耗时325ms,占用内存44.2MB。

相关文章:

  • Excelize 开源基础库发布 2.9.1 版本更新
  • win部署Jenkins 自动化部署发布后端项目
  • 6. 多列布局/用户界面 - 杂志风格文章布局
  • RabbitMQ 核心概念与消息模型深度解析(一)
  • centos中libc.so.6No such file的解决方式
  • 尼康VR镜头防抖模式NORMAL和ACTIVE的区别(私人笔记)
  • 专栏项目框架介绍
  • wpf DataGrid 行选择 命令绑定
  • vscode不能跳转到同一个工作区的其他文件夹
  • 阿里二面:聊聊 MySQL 主从同步方案的优缺点
  • 从虚拟现实到混合现实:沉浸式体验的未来之路
  • STM32 变量加载到flash的过程中
  • python打卡day24
  • 芋道(yudao-cloud)项目,后端接口报401-账号未登录解决方案
  • DELL R770 服务器,更换RAID卡教程!
  • 从SAM看交互式分割与可提示分割的区别与联系:Interactive Segmentation Promptable Segmentation
  • 智能体的典型应用:自动驾驶、智能客服、智能制造、游戏AI与数字人技术
  • 亚远景-基于ASPICE的汽车供应链质量管控培训
  • centos中JDK_PATH 如何设置
  • xss-labs靶场基础8-10关(记录学习)
  • 当代科技拟召开债券持有人会议 ,对“H20科技2”进行四展
  • 济南市委副秘书长吕英伟已任历下区领导
  • 在对国宝的探索中,让美育浸润小学校园与家庭
  • 女高音吴睿睿“古词新唱”,穿着汉服唱唐诗宋词
  • 来伊份深夜回应“粽子中吃出疑似创可贴”:拿到实物后会查明原因
  • 郎朗也来了,在辰山植物园“轻松听古典”