码迷,mamicode.com
首页 > 编程语言 > 详细

【dp】关于石子合并的O(nlogn)做法 GarsiaWachs算法

时间:2020-02-02 01:19:53      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:石头   The   min   emma   asi   compute   ogr   log   art   

P5569

题意:

在一个操场上摆放着一排 \(N\) 堆石子。现要将石子有次序地合并成一堆。规定每次只能选相邻的 \(2\) 堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分。

试设计一个算法,计算出将 \(N\) 堆石子合并成一堆的最小得分。

数据范围:

\(N≤40000,a_i≤200\)

题解:

\(GrasiaWachs\) 算法
从左往右找,找到第一个 \(k\) ,使得 \(a[k-1]<=a[k+1]\) ,我们把这两堆石子合并,把代价加在 \(sum\)
然后从 \(k\) 往左找,找到第一个 \(j\) ,使得 \(a[j]\) \(>\) 合并后的石头,把合并后的石头放在 \(a[j]\)
合并 \(n-1\) 次后,\(sum\) 就是合并 \(n\) 堆石子的最小代价。

\(GarsiaWachs\) 算法可以把时间复杂度压缩到 \(O(nlogn)\)
具体的算法及证明可以参见 \(《The Art of Computer Programming》\) 第3卷 6.2.2 节 Algorithm G和Lemma W,Lemma X,Lemma Y,Lemma Z。



【只能积累石子合并的求最小价值的优化 GarsiaWachs不会证不会推
【四边形不等式优化dp依旧不会
【放blog: 这个有讲到四边形不等式;这个解释了GrasiaWachs算法
【立flag!开学前学四边形不等式优化dp 然后把石子合并求最大值推出来(????)?

【dp】关于石子合并的O(nlogn)做法 GarsiaWachs算法

标签:石头   The   min   emma   asi   compute   ogr   log   art   

原文地址:https://www.cnblogs.com/kkkek/p/12250863.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!