UVA - 10239 The Book-shelver's Problem
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's Problem的更多相关文章
- UVA 10026 Shoemaker's Problem
Shoemaker's Problem Shoemaker has N jobs (orders from customers) which he must make. Shoemaker can w ...
- UVA - 10057 A mid-summer night's dream.
偶数时,中位数之间的数都是能够的(包含中位数) 奇数时,一定是中位数 推导请找初中老师 #include<iostream> #include<cstdio> #include ...
- UVA 12436 - Rip Van Winkle's Code(线段树)
UVA 12436 - Rip Van Winkle's Code option=com_onlinejudge&Itemid=8&page=show_problem&cate ...
- 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的整数部分 ...
- UVa 10025: The ? 1 ? 2 ? ... ? n = k problem
这道题仔细思考后就可以得到比较快捷的解法,只要求出满足n*(n+1)/2 >= |k| ,且n*(n+1)/2-k为偶数的n就可以了.注意n==0时需要特殊判断. 我的解题代码如下: #incl ...
- codeforces 459D - Pashmak and Parmida's problem【离散化+处理+逆序对】
题目:codeforces 459D - Pashmak and Parmida's problem 题意:给出n个数ai.然后定义f(l, r, x) 为ak = x,且l<=k<=r, ...
- 湘潭大学1185 Bob's Problem
Bob's Problem Accepted : 114 Submit : 589 Time Limit : 1000 MS Memory Limit : 65536 KB 题目描写叙述 Bo ...
- Uva 12436 Rip Van Winkle's Code
Rip Van Winkle was fed up with everything except programming. One day he found a problem whichrequir ...
- Codeforces Round #261 (Div. 2)459D. Pashmak and Parmida's problem(求逆序数对)
题目链接:http://codeforces.com/contest/459/problem/D D. Pashmak and Parmida's problem time limit per tes ...
随机推荐
- c/c++ 传统数组的缺点
专题: 动态内存分配 (所有高级语言,没有C里深刻) 传统数组的缺点: 1.数组长度必须事先指定,而且只能是常整数,不能是变量 例子 ]; //必须事先指定,而且只能是常整数 ; int a ...
- 关于BootStrap下图标的显示问题
我现在在做自己的毕业设计,用到了bootstrap的这一套css样式,说句心里话,这一套东西确实很好用,但是一个小问题足足浪费了我将近两个小时. 我的问题是:没有办法使用bootstrap下的图标(很 ...
- 关于keil中data,idata,xdata,pdata,code的问题
转自关于keil中data,idata,xdata,pdata,code的问题 从数据存储类型来说,8051系列有片内.片外程序存储器,片内.片外数据存储器,片内程序存储器还分直接寻址区和间接寻址类 ...
- 单位有b\B\K\M\G的相互转换
计算机存储计量单位 1. 计算机最小存储计量单位是:BIT(位) 2. 计算机最基本存储计量单位是:Bytes(字节) 3. Bit和Bytes的关系:8Bit=1Bytes 4. 其他常用单位:1K ...
- 被忽视的eMMC——A1 SD Bench闪存测试
一直以来,大家对手机的配置方面都比较关注CPU和GPU的架构.频率.核心数等,却经常忽略了手机闪存的速度.实际上手机的闪存素质对手机日常操作的响应.载入速度同样起到举足轻重的影响,今天给大家介绍的则是 ...
- Python之re模块
参考:http://www.cnblogs.com/PythonHome/archive/2011/11/19/2255459.html 这个模块提供了与 Perl 相似l的正则表达式匹配操作.Uni ...
- MySQL优化器cost计算
记录MySQL 5.5上,优化器进行cost计算的方法. 第一篇: 单表的cost计算 数据结构: 1. table_share: 包含了表的元数据,其中索引部分: key_info:一个key的结构 ...
- [C# 网络编程系列]专题四:自定义Web浏览器
转自:http://www.cnblogs.com/zhili/archive/2012/08/24/WebBrowser.html 前言: 前一个专题介绍了自定义的Web服务器,然而向Web服务器发 ...
- PHP重构之函数上移
参考<重构> <?php abstract class Customer { public function addBill($date, $amount) { echo " ...
- (转载)更好的重启nginx 服务器
(转载)http://jar-c.blog.163.com/blog/static/1164012502010511128782/ 以前使用的重启命令 killall -HUP nginx 停止ki ...