这天,小明在搬砖。
他一共有 n 块砖,他发现第 i 砖的重量为 wi,价值为 vi。他突然想从这些砖中选一些出来从下到上堆成一座塔,并且对于塔中的每一块砖来说,它上面所有砖的重量和不能超过它自身的价值。
他想知道这样堆成的塔的总价值(即塔中所有砖块的价值和)最大是多少。
输入共 n + 1 行,第一行为一个正整数 n,表示砖块的数量。
后面 n 行,每行两个正整数 wi , vi 分别表示每块砖的重量和价值。
5 4 4 1 1 5 2 5 5 4 3
10
选择第 1、2、4 块砖,从上到下按照 2、1、4 的顺序堆成一座塔,总价值为 4 + 1 + 5 = 10 。
对于 20% 的数据,保证 n ≤ 10;
对于 100% 的数据,保证 n ≤ 1000; wi ≤ 20; vi ≤ 20000 。
1. 对于编程题目,要求选手给出的解答完全符合 GNU C/C++ 标准,不能使用诸如绘图、Win32API、中断调用、硬件操作或与操作系统相关的 API。
2. 代码中允许使用 STL 类库。
3. main 函数结束必须返回 0。
4. 所有依赖的函数必须明确地在源文件中 #include
5. 提交时,注意选择使用C或C++语言。