/ Vijos / 题库 /

建高塔

建高塔

时间限制:1秒  内存限制:256M


【问题描述】

  作为建筑师的小H接到一个高塔建设的任务,在限定材料的情况下,要建设更高的塔。

  投资方给小H提供了 \(n\) 种特殊石块,高塔需要使用这些石块堆叠而成,每个石块可以自由堆叠在其他石块上面,塔的总高度就是石块的长度之和。

  已知第 \(i\) 种石块的高度位 \(h_i\),使用的安全高度为 \(a_i\),且这种规格的石块有 \(c_i\) 块。所谓的安全高度,就是指第 \(i\) 种石块只能在高度小于或等于 \(a_i\) 的空间里使用,这是因为各种石块的硬度不同,若质地松软的石块使用的高度过低,使得超过其承受能力而危及塔的安全。

  现在给出每种石块的参数,请你帮助小H计算用这些石块能搭建塔的最大高度。

【输入格式】

  第一行是一个正整数 \(n\),表示有 \(n\) 种石块。
  接下来的 \(n\) 行,每行含三个整数:\(h_i,a_i,c_i\),它们之间用一个空格分开,\(h_i\) 表示第 \(i\) 种石块的高度,\(a_i\) 表示安全高度,\(c_i\) 表示数量。

【输出格式】

  只有一行一个整数,表示塔的最大高度。

【输入输出样例1】

 Input

4
7 40 3
5 23 8
2 52 6
10 9 10

 Output

48

【输入输出样例1说明】

  最优的搭建方案是:先选用3块第二种石块堆叠,高度达到3×5=15,在这上面在堆叠3块第一种石块,高度达到15+3×7=36,最后在这上面继续用6块第三种石块,最后高度达到36+6×2=48。
  注意,如果先选用4块第二种石块堆叠,高度达到4×5=20,在这上面在堆叠3块第一种石块,高度达到20+3×7=41,这是不合法的,因为第1种石块的使用高度限制是40。
样例中的第4中石块是废料,因为它本身的高度就高于它的使用高度。

【输入输出样例2】

 Input

6
7 40 3
5 23 8
2 52 6
10 9 10
6 40 4
8 60 3

 Output

60

【输入输出样例2说明】

  最优的搭建方案是:先选用3块第二种石块堆叠,在这上面在堆叠3块第一种石块,最后在这上面继续用3块第六种石块,最后高度达到3*5+3×7+3×8=60。

【数据说明】

  对于 \(20\%\) 的数据,\(1 ≤ n ≤10\)。
  对于 \(50\%\) 的数据,\(1 ≤ n ≤50\)。
  对于 \(100\%\) 的数据,\(1 ≤ n ≤400\),\(1 ≤ h_i ≤100\)。\(1 ≤ a_i ≤40000\),\(1 ≤ c_i ≤10\)。

【来源】

  Mr.he

信息

ID
1485
难度
9
分类
动态规划 | 背包 点击显示
标签
递交数
1
已通过
1
通过率
100%
被复制
4
上传者