题目简述:从左到右依次有$n \leq 10^7$个Domino骨牌,高度为$h_i$,手动推倒他的花费为$c_i$。每个骨牌之间的距离为$1$。一个骨牌可以被向左或者向右推倒。当第$i$个骨牌被推倒时,他会以相同方向推倒与其距离$<h_i$的所有骨牌。求推倒所有骨牌的最小花费。

解:code

令$L[i], R[i]$分别表示第$i$个骨牌向左(右)推倒后,会将$(L[i], i]$($[i, R[i])$)区间内的骨牌推倒。这个可以用单调栈在$O(n)$时间内解决。

令$f[i]$表示(只通过推倒前$i$个骨牌来)推倒前$i$个骨牌的最小花费,则对$1 \leq i \leq n$,

$$ f[i] = \min\left\{ f[L[i]]+c_i, \min_{j < i < R[j]} \{f[j-1]+c_j\} \right\}, $$

这个动态规划也能用单调栈在$O(n)$时间内解决。

最新文章

  1. u-boot移植 III
  2. 自学一个月的java了
  3. hdu4915 Parenthese sequence 贪心O(n)解法(new)
  4. jQuery调用后台方法
  5. SonarQube的安装、配置与使用
  6. [置顶] Jquery学习总结(二) jquery选择器详解
  7. 深入理解javacript之prototype
  8. Android学习之Activity初步
  9. pyqt 简单判断指定的内容强度(比如帐号)
  10. Azure File SMB3.0文件共享服务(5)
  11. HBASE学习笔记--API
  12. day05(数字类型,字符串类型,列表类型)
  13. java-猜数字
  14. 【原创】Windows上应用程序报错常用分析方法总结
  15. 20165235 祁瑛 2018-4 《Java程序设计》第八周学习总结
  16. web项目错误—Java.util.ConcurrentMidificationException
  17. Windows 下的文件被占用问题解决
  18. css基础 -文本溢出 text-overflow:ellipsis;
  19. 线程面试top50题
  20. 渐变显示渐变消失的BackgroundView

热门文章

  1. phpmyadmin内存溢出
  2. 短信计时器Utils
  3. HUD3689 Infinite monkey theorem
  4. My97datepicker日期控件
  5. 流畅python学习笔记第十八章:使用asyncio编写服务器
  6. Java for LeetCode 135 Candy
  7. flask的请求上下文源码解读
  8. debian下烧写stm32f429I discovery裸机程序
  9. 一篇文章了解相见恨晚的 Android Binder 进程间通讯机制【转】
  10. Mysql远程登陆错误:ERROR 2003