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

Leetcode 3530. Maximum Profit from Valid Topological Order in DAG

  • Leetcode 3530. Maximum Profit from Valid Topological Order in DAG
    • 1. 解题思路
    • 2. 代码实现
  • 题目链接:3530. Maximum Profit from Valid Topological Order in DAG

1. 解题思路

这一题的整体思路就是一个动态规划的思路,我们只需要在当前可以访问的位置当中遍历一下所有的可能性,然后取出其中的最大值即可。

因此,这里的核心问题也就变成了如何快速判断当前可以访问的位置。而这个是一个拓扑图的问题,要想要访问一个节点,其必须要求其依赖的节点都必须被访问过。因此,我们需要先根据给定的依赖关系确定一下每一个节点的依赖节点,然后我们只需要记录下当前所有已经访问过的节点,然后依次判断各个节点的依赖条件是否都被满足即可判断当前节点是否可以被取用。

另外,如果整张图没有任何节点,则我们可以简化问题,直接将其score排序之后依次访问即可。

2. 代码实现

给出python代码实现如下:

class Solution:def maxProfit(self, n: int, edges: List[List[int]], score: List[int]) -> int:if len(edges) == 0:return sum((i+1) * x for i, x in enumerate(sorted(score)))need = defaultdict(int)for u, v in edges:need[v]  = need[v] | (1 << u)@lru_cache(None)def dp(idx, visited):if idx > n:return 0ans = 0state = 1for i in range(n):if (visited & state == 0) and (need[i] & visited == need[i]):ans = max(ans, idx * score[i] + dp(idx+1, visited | state))     state = state << 1return ansreturn dp(1, 0)

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

相关文章:

  • C#实现对达索(Dassault)SolidWorks中3D图纸转化为手机可直接查看预览图纸格式
  • 扣子流程图批量导入飞书多维表格
  • springboot 框架把 resources下的zip压缩包, springboot 项目启动后解压到项目根目录工具类
  • 域对齐是什么
  • 基于STM32、HAL库的ATECC608B安全验证及加密芯片驱动程序设计
  • Kotlin-高阶函数,Lambda表达式,内联函数
  • Spring Boot × K8s 监控实战-集成 Prometheus 与 Grafana
  • 在开发板上如何处理curl: (60) SSL certificate problem
  • openssl_error_string() 不要依赖错误信息作为逻辑判断
  • C语言复习笔记--数据在内存中的存储
  • 【LLM】解析RAG增强检索技术:原理、实现与应用
  • 23种设计模式-行为型模式之解释器模式(Java版本)
  • 光谱共焦位移传感器的优势有哪些?
  • 洛谷题解 | CF111C Petya and Spiders
  • 算法基础学习|02归并排序——分治
  • go单向链表
  • 阿里千问Qwen3技术解析与部署指南 :混合推理架构突破性优势与对DeepSeek R1的全面超越
  • 软件测试基础知识详解
  • 【VLNs篇】01:视觉语言导航(VLN)中的LLM角色
  • 关于flex布局
  • 节前A股持续震荡,“五一”假期持股还是持币过节胜率更高?
  • 人民日报:在大有可为的时代大有作为
  • 电话费被私改成48元套餐长达数年,投诉后移动公司退补600元话费
  • 助力企业高质量出海,上海静安发放服务包、服务券
  • 赛力斯拟赴港上市:去年扭亏为盈净利59亿元,三年内实现百万销量目标
  • 药明康德一季度净利增长89%,在手订单增超四成至523亿元