Kimi LeetCode 3530. 有向无环图中合法拓扑排序的最大利润 Rust实现

发布时间:2026/10/19 5:49:11

Kimi    LeetCode 3530. 有向无环图中合法拓扑排序的最大利润 Rust实现 以下是 LeetCode 3530 有向无环图中合法拓扑排序的最大利润 的 Rust 实现。思路概述- n ≤ 22使用状压 DPBitmask DP。- need[i]节点 i 的所有直接前驱的位掩码。- dp[mask]已经选了 mask 中这些节点能获得的最大利润。- 转移时已选节点数为 popcount(mask)下一个位置为 pos bitCount 1。枚举所有不在 mask 中且所有前驱都已选的节点 i更新 dp[mask | (1i)]。- 最终答案为 dp[(1n) - 1]。复杂度- 时间O(2^n · n)由于 n ≤ 22约为 2200 万级别。- 空间O(2^n)完整代码rustimpl Solution {pub fn max_profit(n: i32, edges: VecVeci32, score: Veci32) - i32 {let n n as usize;let max_mask 1 n;// need[i] 节点 i 的所有前驱节点的位掩码let mut need vec![0; n];// dp[mask] 已选 mask 中节点时的最大利润let mut dp vec![-1; max_mask];dp[0] 0;// 构建前驱掩码for edge in edges {let u edge[0] as usize;let v edge[1] as usize;need[v] | 1 u;}for mask in 0..max_mask {if dp[mask] -1 {continue;}let pos (mask.count_ones() 1) as i32; // 下一个位置1-basedfor i in 0..n {// i 不在 mask 中且 i 的所有前驱都已在 mask 中if (mask (1 i)) 0 (need[i] mask) need[i] {let next_mask mask | (1 i);dp[next_mask] dp[next_mask].max(dp[mask] score[i] * pos);}}}dp[max_mask - 1]}}关键点说明1. need[i] 的构建need[v] | 1 u 表示节点 u 必须在 v 之前。转移条件 (need[i] mask) need[i] 等价于 need[i] 是 mask 的子集即 i 的所有前驱都已处理。2. 位置计算pos mask.count_ones() 1因为 mask 中已有 count_ones() 个节点下一个节点自然排在第 count_ones() 1 位。3. DP 初始化dp[0] 0其余为 -1 表示不可达。由于 score[i] ≥ 1 且 pos ≥ 1利润恒为正-1 作为不可达标记是安全的。4. 枚举顺序按 mask 从小到大枚举保证每个状态只被前面的状态更新一次。
延伸阅读

更多相关文章

2026/10/15 21:15:29

自我霸凌的最小单位是什么?

**自我霸凌(self-directed bullying / harsh self-criticism)**并不是正常的自我反思。 自我反思的目的:发现问题,帮助自己改进。自我霸凌的目的(或结果):不断否定自己,让自己越来越…

2026/10/19 5:45:16

智捷云软网关:多协议工业数据采集与边缘计算一体化方案

1. 为什么要做这个“智能桥梁”:传统数据采集的痛点与破局点数据采集这件事,听起来好像就是把传感器和设备的数值读出来、传上去,但真正在工业现场、能源站房、智慧园区里泡过的人都知道,这类项目往往不是死在“采不到数据”&…

2026/10/19 5:45:16

F²SLAM:将前馈几何模型内嵌到因子图优化中的紧耦合SLAM方案

1. 为什么现在的SLAM系统还在“外挂”几何模型1.1 一个被忽视的架构矛盾过去两年,3D Foundation Model(3D基础模型)在三维重建和位姿估计上的表现有目共睹。像DUSt3R、MASt3R这类模型,给定两张或多张图像,就能直接回归…

2026/10/19 5:45:16

数据分析师必备SQL技能:从基础查询到窗口函数的进阶路线

“经常有人问我,做数据分析到底要会多少 SQL?初级教材上的几十条查询语句,够不够用?还是要把存储过程、索引调优都啃下来才行?”这个问题的背后,其实藏着两种焦虑:一种怕学浅了,到了…

2026/10/19 5:45:16

Vibe Coding 复刻 Adobe:用 AI 快速构建专业图像编辑工具

1. 一场“复刻传统软件”的新趋势到底在讲什么第一次听到“Vibe Coding 重写 Adobe”这个说法,我脑子里冒出来的画面是:一个人对着编辑器敲几句自然语言,然后一套能用的图像处理工具就长出来了。这事放在三年前,我会觉得是段子&am…

2026/10/19 5:45:16

基于Docker+QEMU的Linux内核实验环境搭建与调试实践

简介:基于Docker与QEMU打造的Linux内核实验环境,面向操作系统内核学习者、驱动开发者和测试工程师,旨在解决传统内核环境搭建繁琐、版本切换困难的问题。资源共包含368个文件,以shell自动化脚本、Makefile构建文件、Markdown说明文…

2026/10/19 5:40:16

KV Cache分页管理:PagedAttention解决大模型推理显存瓶颈

1. 显存账本:连续KV Cache为什么会拖垮高并发推理1.1 从一次推理算一笔显存账PagedAttention 这个名字第一次撞进我视野,是在给一个并发推理服务做显存优化的时候。当时服务一上量,GPU 显存就像漏了底的水桶,请求队列越拉越长&…

2026/10/18 0:01:50

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/19 0:04:56

悟空开源无代码平台实战:从实体建模到应用设计避坑指南

简介:基于悟空开源无代码平台的多种应用设计源码,面向希望在不编写代码的情况下快速搭建CRM、HRM、财务系统、ERP、SRM等业务应用的企业与技术人员,通过拖放式界面和内置模板即可完成应用定制与部署。压缩包共697个文件,约10.74MB…

2026/10/19 0:04:56

基于.NET9的多租户权限系统:数据权限与动态API落地实践

简介:这份资源是一套面向 .NET 与 Vue 全栈开发者的中台权限管理系统,后端基于 .Net9,前端采用 Vue3 Element Plus,并配套 uniapp uviewui 移动端方案,实现前后端分离。系统覆盖多租户隔离、数据权限、动态 Api、任务…

2026/10/19 0:04:56

场地预约小程序毕设实战:SSM+微信小程序+MySQL数据库设计到避坑

简介:面向毕业设计场景的场地预约小程序完整项目,基于微信小程序SSMMySql技术栈开发,适合计算机相关专业学生作为选题参考、功能扩展或二次开发起点。系统实现场地类型管理、场地管理、预约管理、取消申请与押金退回等功能,分为管…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑