Leetcode 3562. Maximum Profit from Trading Stocks with Discounts

  • Leetcode 3562. Maximum Profit from Trading Stocks with Discounts
    • 1. 解題思路
    • 2. 代碼實現
  • 題目鏈接:3562. Maximum Profit from Trading Stocks with Discounts

1. 解題思路

這一題沒有搞定,思路上整體走偏了,看了一下別人的解答,結合deepseek的回答看了半天,終于是搞明白了里面的道道,也是醉了……

這一題我自己的思路就是一個遍歷,分別考察每一個用戶買與不買的情況下budget的變化以及對其下屬員工price的變動,但是遇到了超時的問題。

然后deepseek給到的解答是視為一個背包問題,即不是考察每個員工買不不買的情況,而是考察給每一個員工及其下屬員工分配多少的預算,然后看其最大能獲得多大的利潤。即,給到的最終的動態規劃的數組為dp[uid][status][budget],其中,uid表示用戶id;status表示其父節點的購買狀態,即直屬上司是否有購買行為;budget表示給該用戶及其下屬所有員工分配的budget;然后dp[uid][status][budget]整體表示當uid用戶的直屬上司的購買狀態為status時,給他及其下屬所有員工分配budget預算時,能夠獲得的最大的profit。

由此一來,我們就可以使用動態規劃進行處理了。

2. 代碼實現

給出python代碼實現如下:

class Solution:def maxProfit(self, n: int, present: List[int], future: List[int], hierarchy: List[List[int]], budget: int) -> int:tree = defaultdict(list)for u, v in hierarchy:tree[u - 1].append(v - 1)@lru_cache(None)def dp(u):'''input: u : int -> 0-based user idoutput: - dp0: [int] * (budget+1) -> max profit for each budget if parent node was not bought- dp1: [int] * (budget+1) -> max profit for each budget if parent node was bought'''child_dp = [dp(v) for v in tree[u]]dp0 = [0] * (budget+1) # parent not buydp1 = [0] * (budget+1) # parent buyfor parent_bought, max_profits in [(0, dp0), (1, dp1)]:cost = present[u] if parent_bought == 0 else present[u] // 2profit = future[u] - costdpA = [0] + [-math.inf] * (budget) # u not buydpB = [-math.inf] * (budget+1) # u buyif cost <= budget:dpB[cost] = profitfor case0, case1 in child_dp:new_dpA = [-math.inf] * (budget+1) # u not buyfor bgt in range(budget+1):if dpA[bgt] == -math.inf:continuefor k in range(budget-bgt+1):if case0[k] == -math.inf:continuenew_dpA[bgt+k] = max(new_dpA[bgt+k], dpA[bgt] + case0[k])dpA = new_dpAnew_dpB = [-math.inf] * (budget+1) # u buyfor bgt in range(budget+1):if dpB[bgt] == -math.inf:continuefor k in range(budget-bgt+1):if case1[k] == -math.inf:continuenew_dpB[bgt+k] = max(new_dpB[bgt+k], dpB[bgt] + case1[k])dpB = new_dpBfor bgt in range(budget+1):max_profits[bgt] = max(dpA[bgt], dpB[bgt])return dp0, dp1max_profits, _ = dp(0)return max(max_profits)

提交代碼評測得到:耗時2362ms,占用內存22.8MB。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/907010.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/907010.shtml
英文地址,請注明出處:http://en.pswp.cn/news/907010.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Redis】第2節|Redis基本數據類型

一、基礎數據結構 1. String&#xff08;字符串&#xff09; 特點&#xff1a;二進制安全&#xff0c;支持字符串、數值存儲&#xff0c;原子性操作。核心操作&#xff1a; SET key value # 存儲鍵值對 GET key # 獲取值 INCR key # 數值…

用matlab提取abaqus odb文件中的節點信息

在MATLAB中提取Abaqus ODB文件中的節點信息&#xff0c;可以通過以下幾種方法實現&#xff1a; 方法1&#xff1a;使用MATLAB的ABAQUS Interface工具箱 https://wenku.csdn.net/answer/77axwtqnys 可以參考這個 MATLAB的ABAQUS Interface工具箱提供了直接讀取ODB文件的功能。…

【Java】異常處理

1.異常的概念 在程序運行時&#xff0c;打斷正常程序流程的不正常情況分兩類: 1.錯誤(Error)&#xff1a;應用程序無法捕獲的嚴重問題(自己無法處理) 例&#xff1a; 虛擬機相關的問題&#xff0c;如虛擬機崩潰、動態鏈接失敗、低層資源錯誤等 總是不受編譯器檢查的&#xff0…

Linux(Centos 7.6)命令詳解:tar

1.命令作用 命令tar將許多文件一起保存到單個磁帶或磁盤存檔中&#xff0c;并且可以從存檔中恢復單個文件(GNU tar saves many files together into a single tape or disk archive, and can restore individual files from the archive.)。 2.命令語法 Usage: tar [OPTION.…

企業網絡綜合實訓

企業網絡綜合實訓 任務描述&#xff1a; 公司的中心機房、辦公區一和辦公區二位于同一園區。要求各大樓之間要互通&#xff0c;并且均能訪問Internet&#xff1b;同時公司業務需要對外拓展&#xff0c;需要在Internet數據中心機房部署一臺對外提供DNS和Web站點服務的服務器。…

8天Python從入門到精通【itheima】-41~44

目錄 41節-while循環的嵌套應用 1.學習目標 2.while循環的偽代碼和生活情境中的應用 3.圖片應用的代碼案例 4.代碼實例【Patrick自己親手寫的】&#xff1a; 5.whlie嵌套循環的注意點 6.小節總結 42節-while循環的嵌套案例-九九乘法表 1.補充知識-print的不換行 2.補充…

探索Linux互斥:線程安全與資源共享

個人主頁&#xff1a;chian-ocean 文章專欄-Linux 前言&#xff1a; 互斥是并發編程中避免競爭條件和保護共享資源的核心技術。通過使用鎖或信號量等機制&#xff0c;能夠確保多線程或多進程環境下對共享資源的安全訪問&#xff0c;避免數據不一致、死鎖等問題。 競爭條件 競…

《Stable Diffusion 3.0企業級落地指南》——技術賦能與商業價值的深度融合實踐

Stable Diffusion 3.0&#xff08;SD3&#xff09;作為當前多模態生成式AI技術的集大成者&#xff0c;憑借其創新的擴散Transformer架構&#xff08;DiT&#xff09;、流匹配&#xff08;Flow Matching&#xff09;技術以及超分辨率生成能力&#xff0c;正在重塑企業內容生產的…

基于本地模型+多級校驗設計的高效緩存,有效節省token數量(有點雞肋doge)。

前言 我是基于token有限而考慮的一個省錢方案&#xff0c;還能夠快速返回結果&#xff0c;但是劣勢也很明顯&#xff0c;設計不好容易出問題&#xff0c;就如下面所介紹的語義飄逸和緩存污染&#xff0c;我認為在自己學習大模型的過程用來省錢非常可以&#xff0c;再加上學習過…

網絡安全全知識圖譜:威脅、防護、管理與發展趨勢詳解

1 網絡安全基礎概念 1.1 什么是網絡安全 網絡安全是指通過技術、管理和法律等手段&#xff0c;保護計算機網絡系統中的硬件、軟件及其系統中的數據&#xff0c;不因偶然的或者惡意的原因而遭受到破壞、更改、泄露&#xff0c;確保系統連續可靠正常地運行&#xff0c;網絡服務不…

遠控安全進階之戰:TeamViewer/ToDesk/向日葵設備安全策略對比

【作者主頁】Francek Chen 【文章摘要】在數字化時代&#xff0c;卓越的遠程控制軟件需兼顧功能與體驗&#xff0c;包括流暢連接、高清畫質、低門檻UI設計、毫秒級延遲及多功能性&#xff0c;同時要有獨樹一幟的遠控安全技術&#xff0c;通過前瞻性安全策略阻擋網絡風險&#x…

Steam發布游戲過程的若干問題

我沒有想到在Steam發布游戲的過程會比做游戲的過程更困難&#xff0c;更惡心。 注冊Steamworks 稅務采訪 稅務采訪部分填的地址要和后面它們要求你發證件照片里的地址一樣。護照里因為沒有地址不會通過&#xff0c;我用的駕照里面有地址。沒有駕照可以用身份證。 應用準備界…

開搞:第四個微信小程序:圖上縣志

原因&#xff1a;我換了一個微信號來搞&#xff0c;因為用同一個用戶&#xff0c;備案只能一個個的來。這樣不行。所以我換了一個。原來注冊過小程序。現在修改即可。注意做好計劃后&#xff0c;速度備案和審核&#xff0c;不然你時間浪費不起。30元花起。 結構&#xff1a; -…

第三十七天打卡

知識點回顧&#xff1a; 過擬合的判斷&#xff1a;測試集和訓練集同步打印指標模型的保存和加載 僅保存權重保存權重和模型保存全部信息checkpoint&#xff0c;還包含訓練狀態 早停策略 作業&#xff1a;對信貸數據集訓練后保存權重&#xff0c;加載權重后繼續訓練50輪&#x…

Java高頻面試之并發編程-21

hello啊&#xff0c;各位觀眾姥爺們&#xff01;&#xff01;&#xff01;本baby今天又來報道了&#xff01;哈哈哈哈哈嗝&#x1f436; 面試官&#xff1a;詳細說說AQS AQS&#xff08;AbstractQueuedSynchronizer&#xff09;是 Java 并發包&#xff08;java.util.concurre…

按鍵狀態機

原工程地址&#xff1a;https://github.com/candylife9/state_machine_example 視頻&#xff1a;C語言之狀態機編程_02_狀態機使用案例分析_嗶哩嗶哩_bilibili 我覺得講的挺好的。 來自豆包封裝的通用接口 頭文件 /*** file key_state_machine.h* brief 通用按鍵狀態機接口…

華為OD機試真題——新學校選址(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳實現

2025 A卷 100分 題型 本專欄內全部題目均提供Java、python、JavaScript、C、C++、GO六種語言的最佳實現方式; 并且每種語言均涵蓋詳細的問題分析、解題思路、代碼實現、代碼詳解、3個測試用例以及綜合分析; 本文收錄于專欄:《2025華為OD真題目錄+全流程解析+備考攻略+經驗分…

歐拉操作系統下安裝hadoop集群

背景&#xff1a;歐拉操作系統下安裝CDH集群的時候&#xff0c;需要安裝python2.7.5&#xff0c;但是本身歐拉系統對python2的支持可能沒有那么好&#xff0c;所以考慮搭建原生的hadoop集群。 基礎環境如下 組件名稱組件版本歐拉VERSION“22.03 (LTS-SP4)”jdkopenjdk versio…

SQL語句的執行流程

文章目錄 一、執行流程二、建立連接三、預處理器四、解析器4.1 詞法分析4.2 語法分析4.3 語義分析 五、優化器六、執行器七、返回結果 一、執行流程 階段主要功能關鍵組件1. 建立連接身份驗證、權限檢查連接器2. 預處理器緩存檢查、SQL預處理查詢緩存3. 解析器詞法分析、語法分…

TiDB:從快速上手到核心原理與最佳實踐

文章目錄 引言第一部分&#xff1a;TiDB快速體驗與實踐指南1. TiDB概述2. TiDB部署方式2.1 本地測試環境部署2.2 生產環境部署2.3 Kubernetes部署2.4 云服務 3. TiDB基本操作3.1 連接TiDB3.2 數據庫和表操作3.3 分區表3.4 事務操作 4. 數據遷移到TiDB4.1 從MySQL遷移4.2 使用Ti…