建高塔
时间限制: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