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