讲义09 - dp2 , 合并演算法1 dp 优化 - 建中首页.pdf

讲义09 - dp2 , 合并演算法1 dp 优化 - 建中首页.pdf

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
讲义09 - dp2 , 合并演算法1 dp 优化 - 建中首页

1 DP優化 建國中學 2012 年資訊能力競賽培訓講義- 09 2012/12/17 講義 09 - DP2 ,合併演算法 VI 2012/12/17 1 DP優化 在前面的章節我們提到了用動態規劃 (Dynamic Programming) 來解決各式各樣的問題, 而在這裡我們要討論一些神奇的優化方式。 1.1 單調隊列優化 先回憶一下雙向佇列(Deque)這個資料結構,他可以支援兩種操作: •從兩端 push新的元素進去。 •從兩端 pop 元素出去。 可以知道 Deque 完全涵蓋了Stack和 Queue的操作。 而Deque通常用來優化 DP中取極值的動作,尤其是要查詢多個範圍的極值,且這些範圍滿 足一定的單調性,我們將在下面一一討論。 1.1.1 min ≤ ≤ ≤ ≤ 簡單來說我們要依序查詢序列的某些區間的最大值,而且這些序列的區間左界和右界都 是遞增的。假設序列的長度為 , 如果我們對於每個區間都直接掃過一遍,時間複雜度會到 。 但仔細觀察可以發現,如果存在兩個元素 使得 ≥ 且 ≤ ,那麼對於第 筆之後的詢問, 絕不可能是區間的最小值。因此我們可以維護 Deque從前面到後面是遞 增的,即加入元素時保持單調性而從後面 pop 出元素,而當要查詢的時候先從前端pop 出過 期的元素後,極值即為Deque中最前端的元素。 1.1.2 min − ≤ ≤ ≤ 對於這個情況,如果我們令 − ,原本的式子就可以改寫成 min ≤ ≤ Author: VI 1 1 DP優化 建國中學 2012 年資訊能力競賽培訓講義- 09 2012/12/17 而因為對於同一個 來說 是固定的,這樣就轉化成第一種情況了。這個式子可以讓我們加 速背包問題的 DP ,回憶一下背包問題的DP 式,假設一個物品的重量為 ,價值為 且有 個: max − − ≤≤≤− 這個式子可以改寫為 max − − ≤ ≤ 可以看出 − 即為 ,即為 。這可以讓我們在 的時間解決背包問 題,其中 是背包的耐重, 為物品的數量,是一個與同一個物品的數量 無關的算法。 1.1.3

文档评论(0)

wujianz + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档