题目名称 485. 整理书本
输入输出 book.in/out
难度等级
时间限制 1000 ms (1 s)
内存限制 128 MiB
测试数据 10
题目来源 Gravatarcqw 于2010-10-25加入
开放分组 全部用户
提交状态
分类标签
分享题解
通过:36, 提交:45, 通过率:80%
Gravatar ҉҉河北交通广播992帽哥来了 100 0.142 s 1.56 MiB C++
GravatarFuryton 100 0.144 s 0.58 MiB C++
Gravatarking'back 100 0.168 s 0.77 MiB C++
Gravatardevil 100 0.182 s 0.96 MiB C++
GravatarHzoi_chairman 100 0.191 s 2.22 MiB C++
Gravatar金身人面兽 100 0.202 s 1.33 MiB C++
GravatarTruth.Cirno 100 0.247 s 0.87 MiB C++
GravatarMakazeu 100 0.267 s 2.11 MiB C++
Gravatarsqyon 100 0.270 s 0.85 MiB C++
Gravatar浮生随想 100 0.295 s 1.59 MiB C++
本题关联比赛
20101025
关于 整理书本 的近10条评论(全部评论)
mark
Gravatardevil
2014-10-05 22:50 2楼
石子归并的变种,代码其实都一模一样,只需要在输入时稍作处理即可。
二维的O(n3)DP,状态为:f[i][j]表示从i开始的j堆书合并所需的最小代价。
第三维枚举分界点。具体的也不好解释,总之石子归并还是要好好复习啊。
GravatarTruth.Cirno
2011-11-07 16:15 1楼

485. 整理书本

★   输入文件:book.in   输出文件:book.out   简单对比
时间限制:1 s   内存限制:128 MiB

【问题描述】
Ztc想把他满屋子的书整理一下。为了应付繁重的学习任务,ztc已经筋疲力尽了,于是他向你求助,请你帮他计算他最少需要花费多少力气。
书本分成若干堆,呈直线排布。每一堆的书本都有重量w和价值v。Ztc的任务是将所有书合成一堆。因为Ztc很看重书本的价值,所以他认为合并i,j两堆的书所需要的力气为w[i]-v[i]+w[j]-v[j]。合并后的书堆的重量和价值均为合并前两堆书的重量和价值的总和。也就是说,合并i.j两堆的书后,w=w[i]+w[j],v=v[i]+v[j]。小智个人不愿意走来走去,所以合并只能在相邻两堆书本间进行。书本合并前后,位置不变。如将1,2,3中的1,2进行合并,那么合并结果为3,3,再将3,3合并为6(1,2,3,6指重量)。

【输入】
输入文件book.in的第一行是一个整数n(2≤n≤400)。
第2~n+1行每行两个整数w和v(0<v<w≤1000)。

【输出】
输出文件book.out共一行,这一行只有一个整数f,表示最小力气。

【输入输出样例】
book.in
3
6 5
9 7
11 2
book.out
15
【输入输出样例解释】
先将前两堆合并,再将合并后的书堆与剩余的一堆合并。

【限制】
30%的数据满足:2≤n≤100
100%的数据满足:2≤n≤400