首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

HDU 2652 Watching TV:區間調度最大幸福值 (加權區間調度 DP)

     編輯:程式設計疑難解答

題目模型

N 個 TV 節目,每個有開始 `s`、結束 `e`、幸福值 `v`。選擇不重疊節目最大化總幸福值。N≤100000。

解法:排序 + DP + 二分優化

  1. 按結束時間 `e` 升序排序。
  2. `dp[i]` = 前 i 個節目 (按結束時間) 的最大幸福值。
    `dp[i] = max(dp[i-1], dp[p(i)] + v[i])`
    其中 `p(i)` = 最大的 `j < i` 使得 `e[j] <= s[i]` (二分查找)。
  3. 答案 `dp[N]`。

複雜度

  • 排序 O(N log N),DP O(N log N) (二分),總 O(N log N)。

參考題解

acmerblog 詳細講解與代碼

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved