zoukankan      html  css  js  c++  java
  • 【dp】关于石子合并的O(nlogn)做法 GarsiaWachs算法

    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: [这个](https://www.cnblogs.com/jiu0821/p/4493497.html)有讲到四边形不等式;[这个](http://blog.sina.com.cn/s/blog_a825ada90101no1m.html)解释了GrasiaWachs算法 【立flag!开学前学四边形不等式优化dp 然后把石子合并求最大值推出来(๑•ㅂ•)و
  • 相关阅读:
    斑马打印交叉线制作方法
    c# 导出2007格式的Excel的连接字符串
    MySql数据库 timeout超时报警的解决方法
    c# 根据域名的到对应的IP
    c# 开发+MySql数据库
    c# datagridview导出Excel文件 问题
    ae GP制作缓冲区分析
    ae 地理坐标与投影坐标转换 [转]
    Dev Winform 简洁界面模板制作
    Dev TreeList 总结
  • 原文地址:https://www.cnblogs.com/kkkek/p/12250863.html
Copyright © 2011-2022 走看看