Consider the problem of storing n books on shelves in a library. The order of the books is fixed
by the cataloging system and so cannot be rearraged. Therefore, we can speak of a book bi, where
1 i n, that has a thickness ti and height hi. The length of each bookshelf at this library is L.
Now consider the case where the height of the
books is not constant, but we have the freedom to adjust the height of each shelf to that of the
tallest book on the shelf. Thus the cost of a particular layout is the sum of the heights of the largest
book on each shelf. (1) Give an example to show that the greedy algorithm of stuffing each shelf
as full as possible does not always give the minimum overall height.

书架问题:

Greedy 并非最有方法:

(1) Consider 3 books with the same thickness t, t = L/2. Book 1 has height h, while Book 2 and
3 has height 2h.
The greedy algorithm will put Book 1 and 2 in the first shelf and put Book 3 in the second shelf,
which makes the cost 2h + 2h = 4h.
However, the best strategy will put Book 1 in the first shelf and put Book 2 and 3 in the second
shelf, which makes the cost h + 2h = 3h.
Thus the greedy algorithm does not always give the minimum overall height.

一维DP:

维护量:S[i], The minimum height when putting i books on shelves.

l, 当前书架已利用宽度

思路就是:1. 利用l判断当前第i本书能不能放到当前层次,如果能放进去,就放,这样高度肯定最小,因为前面i-1本书的高度是最优,放进第i本并没有增加高度。这里有点类似Greedy。l也需要更新,因为放得下,就更新为 l+= 新的厚度;

2. 如果当前第i本书无法放进去,需要新开一层。这时候就要考虑,是不是需要把下面一层的书放到新的一层来,以优化高度。这里就体现DP了,greedy在这里就不一定最优了

这时候 l  就更新为最优那种方式,放在最顶层的书的厚度之和

Summary: 书架问题的更多相关文章

  1. ASP.NET Core MVC 打造一个简单的图书馆管理系统 (修正版)(一) 基本模型以及数据库的建立

    前言: 本系列文章主要为我之前所学知识的一次微小的实践,以我学校图书馆管理系统为雏形所作. 本系列文章主要参考资料: 微软文档:https://docs.microsoft.com/zh-cn/asp ...

  2. Summary of Critical and Exploitable iOS Vulnerabilities in 2016

    Summary of Critical and Exploitable iOS Vulnerabilities in 2016 Author:Min (Spark) Zheng, Cererdlong ...

  3. 三个不常用的HTML元素:<details>、<summary>、<dialog>

    前面的话 HTML5不仅新增了语义型区块级元素及表单类元素,也新增了一些其他的功能性元素,这些元素由于浏览器支持等各种原因,并没有被广泛使用 文档描述 <details>主要用于描述文档或 ...

  4. [LeetCode] Summary Ranges 总结区间

    Given a sorted integer array without duplicates, return the summary of its ranges. For example, give ...

  5. Network Basic Commands Summary

    Network Basic Commands Summary set or modify hostname a)     temporary ways hostname NEW_HOSTNAME, b ...

  6. Summary - SNMP Tutorial

    30.13 Summary Network management protocols allow a manager to monitor and control routers and hosts. ...

  7. Mac Brew Install Nginx Summary

    ==> Downloading https://homebrew.bintray.com/bottles/nginx-1.10.1.el_capitan.bot################# ...

  8. [BZOJ1861][Zjoi2006]Book 书架

    [BZOJ1861][Zjoi2006]Book 书架 试题描述 小T有一个很大的书柜.这个书柜的构造有些独特,即书柜里的书是从上至下堆放成一列.她用1到n的正整数给每本书都编了号. 小T在看书的时候 ...

  9. Android分享一款漂亮的折叠书架菜单

    一个Android折叠书架菜单,效果极佳,给人的视觉感觉很好,便于使用. FoldingMenu

随机推荐

  1. C语言工具:LCC-Win32+v3.0

    LCC-Win32+v3.0(带汉化).rar  小巧精悍的工具 安装步骤: 1.先安装 LCC-Win32V3.0.exe 假如安装目录为:C:\lcc 2.再安装 LCC-Win32V3.0汉化补 ...

  2. CF 217A Ice Skating

    A. Ice Skating time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...

  3. 【咸鱼教程】TextureMerger1.6.6 三:Bitmap Font的制作和使用

    BitmapFont主要用于特殊字体在游戏中的使用   目录 一 方法1:添加字符      适合一张一张的零碎图片来制作位图字体 二 方法2:系统字体      适合使用已安装的系统字体来制作位图字 ...

  4. android中SimpleCursorAdapter _id错误的问题

    作为一个android新手,在绑定数据的时候是这样的 ListView listview=(ListView)this.findViewById(R.id.listView1); XJDal xj=n ...

  5. css如何设置label的字间距

    css.html如何设置label的字间距 .myClass  label{ letter-spacing: 10px; } 如果label需要居中,需加上 text-indent: 10px; 首行 ...

  6. Mac - Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

    在终端输入mysql,结果出现 macdeMacBook-Pro:~ mac$ alias mysql=/usr/local/mysql/bin/mysql macdeMacBook-Pro:~ ma ...

  7. css---媒体查询

    简单示例: <style type="text/css"> /* 小于 300的时候 */ @media screen and (max-width: 400px){ ...

  8. Dividing the Path POJ - 2373 dp

    题意:你有无数个长度可变的区间d  满足 2a<=d<=2b且为偶数. 现在要你用这些区间填满一条长为L(L<1e6且保证是偶数)的长线段. 满足以下要求: 1.可变区间之间不能有 ...

  9. 代码参数里的 payload 是什么意思???

    代码参数里的 payload 是什么意思???

  10. Spring Boot中的AutoConfiguation核心注解

    import org.springframework.boot.autoconfigure.condition.*; @ConditionalOnBean // 当容器中有指定bean的条件下 @Co ...