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

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。

http://www.xdnf.cn/news/3114.html

相关文章:

  • CSS:编写位置分类及优先级
  • 从Markdown到专业文档:如何用Python打造高效格式转换工具
  • Qwen3-8B安装与体验-速度很快!
  • Yaml文件
  • 数字逻辑--期末大复习
  • 激光雷达点云去畸变
  • ctf.show 卷王杯 pwn签到
  • DDI0487--A1.7
  • onlyoffice部署
  • Ignoring query to other database
  • Elasticsearch:ES|QL lookup JOIN 介绍 - 8.18/9.0
  • STP学习
  • 排序版研究方向
  • docker部署的Nextcloud,处于维护模式,如何解决
  • 华为自研的仓颉编程语言介绍
  • Qwen3 系列的后训练技术
  • 无人机航拍羊只检测数据集VOC+YOLO格式6065张1类别
  • Spring计时器StopWatch 统计各个方法执行时间和占比
  • ModbusRTU转PROFIBUS网关通讯
  • 30天通过软考高项-第七天
  • 如何计算数码显微镜的放大倍率
  • Kubernetes集群使用Harbor容器镜像仓库
  • 【数据治理】数据生命周期
  • ESP32- 开发笔记- 软件开发 4 - GPIO 口
  • 通过漂移-扩散仿真研究钙钛矿-硅叠层太阳能电池中的电流匹配和滞后行为
  • 【Web】如何解决 `npm run dev` 报错 `address already in use 127.0.0.1:9005` 的问题
  • WHAT - 前端开发滚动条场景解析
  • scratch代码——游戏开发 【弹簧与反弹】
  • Java-jwt4.4.0版本使用
  • 特殊权限管理