Description


Problem D

The Book-shelver’s Problem


Input: standard input

Output: standard output

Time Limit: 5 seconds

Memory Limit: 32 MB

You are given a collection of books, which must be shelved in a library bookcase ordered (from top to bottom in the bookcase and from left to right in each shelf) by the books’ catalogue numbers. The bookcase has a fixed width, but you may have any height
you like. The books are placed on shelves in the bookcase in the usual upright manner (i.e., you cannot lay a book on its side). You may use as many shelves as you like, placed wherever you like up to the height of the bookcase, and you may put as many books
on each shelf as you like up to the width of the bookcase. You may assume that the shelves have negligible thickness.

Now, given an ordered (by catalogue numbers) list of the heights and widths of the books and the width of the bookcase, you are expected to determine what is the minimum height bookcase that can shelve all those books.

Input

The input file may contain multiple test cases. The first line of each test case contains an integer
N (1 £ N £ 1000) that denotes the number of books to shelve, and a floating-point number
W (0 < W £ 1000) that denotes the width of the bookcase in centimeters. Then follow
N lines where the i-th (1 £ i £ N) line contains two floating-point numbers
hi (0 < hi £ 100) and wi (0 < wi £ W) indicating the height and width (both in centimeters) of the
i-th book in the list ordered by catalogue numbers. Each floating-point number will have four digits after the decimal point.

A test case containing two zeros for N and W terminates the input.

Output

For each test case in the input print a line containing the minimum height (in centimeters, up to four digits after the decimal point) of the bookcase that can shelve all the books in the list.

 

Sample Input

5 30.0000

30.0000 20.0000

20.0000 10.0000

25.0000 10.0000

30.0000 15.0000

10.0000 5.0000

10 20.0000

10.0000 2.0000

15.0000 10.0000

20.0000 5.0000

6.0000 2.0000

10.0000 3.0000

30.0000 6.0000

5.0000 3.0000

35.0000 2.0000

32.0000 4.0000

10.0000 6.0000

0 0.0000

 

Sample Output

60.0000

65.0000

题意:n本书,有宽和高,要你依次放到书架上,能够用木板隔层,每层最多不超过m的宽度

思路:居然要求是依次放,那么每本书有放这层和不放这层的两种可能,记忆化搜索,注意要考虑全都放一层的情况

#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
#include <cmath>
#include <cstdlib>
using namespace std;
const int maxn = 1005;
const double inf = 0x3f3f3f3f3f3f3f3f;
double m, h[maxn], w[maxn], dp[maxn];
int n, vis[maxn]; double dfs(int cur) {
if (cur >= n+1)
return 0;
if (vis[cur])
return dp[cur];
double &ans = dp[cur];
ans = inf;
vis[cur] = 1;
double H = h[cur], W = w[cur];
for (int u = cur+1; u <= n+1; u++) {
ans = min(ans, dfs(u)+H);
W += w[u];
H = max(H, h[u]);
if (W-m > 1e-9)
break;
}
return ans;
} int main() {
while (scanf("%d%lf", &n, &m) != EOF && n) {
memset(vis, 0, sizeof(vis));
for (int i = 1; i <= n; i++)
scanf("%lf%lf", &h[i], &w[i]);
double ans = dfs(1);
printf("%.4lf\n", ans);
}
return 0;
}

UVA - 10239 The Book-shelver&#39;s Problem的更多相关文章

  1. UVA 10026 Shoemaker&#39;s Problem

    Shoemaker's Problem Shoemaker has N jobs (orders from customers) which he must make. Shoemaker can w ...

  2. UVA - 10057 A mid-summer night&#39;s dream.

    偶数时,中位数之间的数都是能够的(包含中位数) 奇数时,一定是中位数 推导请找初中老师 #include<iostream> #include<cstdio> #include ...

  3. UVA 12436 - Rip Van Winkle&#39;s Code(线段树)

    UVA 12436 - Rip Van Winkle's Code option=com_onlinejudge&Itemid=8&page=show_problem&cate ...

  4. UVa 1363 (数论 数列求和) Joseph's Problem

    题意: 给出n, k,求 分析: 假设,则k mod (i+1) = k - (i+1)*p = k - i*p - p = k mod i - p 则对于某个区间,i∈[l, r],k/i的整数部分 ...

  5. UVa 10025: The ? 1 ? 2 ? ... ? n = k problem

    这道题仔细思考后就可以得到比较快捷的解法,只要求出满足n*(n+1)/2 >= |k| ,且n*(n+1)/2-k为偶数的n就可以了.注意n==0时需要特殊判断. 我的解题代码如下: #incl ...

  6. codeforces 459D - Pashmak and Parmida&#39;s problem【离散化+处理+逆序对】

    题目:codeforces 459D - Pashmak and Parmida's problem 题意:给出n个数ai.然后定义f(l, r, x) 为ak = x,且l<=k<=r, ...

  7. 湘潭大学1185 Bob&#39;s Problem

    Bob's Problem Accepted : 114   Submit : 589 Time Limit : 1000 MS   Memory Limit : 65536 KB 题目描写叙述 Bo ...

  8. Uva 12436 Rip Van Winkle&#39;s Code

    Rip Van Winkle was fed up with everything except programming. One day he found a problem whichrequir ...

  9. Codeforces Round #261 (Div. 2)459D. Pashmak and Parmida&#39;s problem(求逆序数对)

    题目链接:http://codeforces.com/contest/459/problem/D D. Pashmak and Parmida's problem time limit per tes ...

随机推荐

  1. NOIP 2011 提高组 计算系数

    有二项式定理 `\left( a+b\right) ^{n}=\sum _{r=0}^{n}\left( \begin{matrix} n\\ r\end{matrix} \right) a^{n-r ...

  2. 修改PHP上传大小设置

    目前文档文库上传大小是读取服务器的PHP环境的设置,你们的PHP环境上传限制是多少,这里显示的就是多少. 很多用户问我如何修改上传大小,自己可以百度一下方法,也可以根据以下步骤修改: 1.找到服务务器 ...

  3. php 文件下载 以及 file_exists找不到文件的解决方案

    链接:<a href="upload/file/download.php?filename=雨人工作室.doc" target="_blank" > ...

  4. C++静态变量对象的建立和删除,兼论MFC开始运行的起点(全局对象)

    看了不少C++书,当讲到静态变量的时候,总是以int成员来举例,是啊,这样很好理解.但是如果这个静态变量是一个对象行不行呢?不仅行,有时候还非常必要,而且别有洞天. 比如: // .h 文件 clas ...

  5. FishEye简介

    前言     在项目开发过程中,随着开发的进行,将有大量的代码编写提交到代码仓库,如何能全面准确的了解源代码的变化,提交的频率,代码量的趋势,发现代码的缺陷,将是控制源代码质量的重要指标,这个时候一个 ...

  6. 将eclipse新建项目的默认编码GBK改为UTF-8

    在eclipse下: 新建项目默认编码设置:Window->Preferences->General->Workspace->Text file encoding 将其改为UF ...

  7. VM Depot 喜迎中国本土开源镜像!

     发布于 2014-04-07 作者 陈 忠岳 VM Depot 登陆中国之际,我非常高兴地告诉大家,一批各位耳熟能详的中国本地开源镜像已同时上线!得益于开源社区的大力支持,Ubuntu 麒麟13 ...

  8. 【转】BCSphere入门教程01:Immediate Alert--不错

    原文网址:http://www.ituring.com.cn/article/117570 写在前面 智能硬件开发的起点是智能硬件,在本教程中的每一章节,首先会列出您的蓝牙智能硬件所需要支持的Serv ...

  9. Android Fragment类方法

    public void onStart() 当该Fragment对象对用户可见时,该方法会被调用.该方法通常会跟它的Activity的生命周期的Activity.onStart()方法绑定. publ ...

  10. Eclipse超级完美汉化教程

    转自:http://jingyan.baidu.com/article/e75057f28401a8ebc91a899e.html 是中国人都喜欢汉化的东西,除非你想挑战英文,抑或你就是英语高手.百度 ...