這天,小明在搬磚。
他一共有 n 塊磚,他發(fā)現(xiàn)第 i 磚的重量為 wi,價值為 vi。他突然想從這些磚中選一些出來從下到上堆成一座塔,并且對于塔中的每一塊磚來說,它上面所有磚的重量和不能超過它自身的價值。
他想知道這樣堆成的塔的總價值(即塔中所有磚塊的價值和)最大是多少。
輸入共 n + 1 行,第一行為一個正整數(shù) n,表示磚塊的數(shù)量。
后面 n 行,每行兩個正整數(shù) 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% 的數(shù)據(jù),保證 n ≤ 10;
對于 100% 的數(shù)據(jù),保證 n ≤ 1000; wi ≤ 20; vi ≤ 20000 。
1. 對于編程題目,要求選手給出的解答完全符合 GNU C/C++ 標(biāo)準(zhǔn),不能使用諸如繪圖、Win32API、中斷調(diào)用、硬件操作或與操作系統(tǒng)相關(guān)的 API。
2. 代碼中允許使用 STL 類庫。
3. main 函數(shù)結(jié)束必須返回 0。
4. 所有依賴的函數(shù)必須明確地在源文件中 #include
5. 提交時,注意選擇使用C或C++語言。