一群小矮人掉進了乙個很深的陷阱裡,由於太矮爬不上來,於是他們決定搭乙個人梯。即:乙個小矮人站在另一小矮人的肩膀上,知道最頂端的小矮人伸直胳膊可以碰到陷阱口。對於每乙個小矮人,我們知道他從腳到肩膀的高度ai,並且他的胳膊長度為bi。陷阱深度為h。如果我們利用矮人1,矮人2,矮人3,。。。矮人k搭乙個梯子,滿足a1+a2+a3+....+ak+bk>=h,那麼矮人k就可以離開陷阱逃跑了,一旦乙個矮人逃跑了,他就不能再搭人梯了。
我們希望盡可能多的小矮人逃跑, 問最多可以使多少個小矮人逃跑。
第一行乙個整數n, 表示矮人的個數,接下來n行每一行兩個整數ai和bi,最後一行是h。(ai,bi,h<=10^5)
乙個整數表示對多可以逃跑多少小矮人
樣例12
20 10
5 530
樣例22
20 10
5 535
樣例1樣例1
資料範圍
30%的資料 n<=200
100%的資料 n<=2000
/*view code由題意可以知道,e[i].a+e[i].b大的跑出來的能力強,所以我們讓e[i].a+e[i].b小的
優先跑出來,但這樣的結果一定不是最優,所以要用dp來進行加強;f[i]表示已經出來i個人的時候最大的身高和,f[0]=σe[i].a。
*/#include
#include
#include
#include
#define m 2010
using
namespace
std;
intn,m,f[m];
struct
node
;node e[m];
int cmp(const node&a,const node&b)
intmain()
printf("%d
",ans);
return0;
}
TJOI 2013 拯救小矮人
有 n 個人,每個人有兩個屬性 a i,b i 現在他們要從洞裡逃出去。第 x 個人能逃出去的條件是,隨意選擇一些還在洞裡的人 重新編號為 1.k 滿足 a 1 a 2 a k a x b x ge h 注意,第 x 個人不能在這 k 個人裡。求最多能跑出去多少個人。貪心和 dp 的結合,不得不說是...
TJOI2013 拯救小矮人
一群小矮人掉進了乙個很深的陷阱裡,由於太矮爬不上來,於是他們決定搭乙個人梯。即 乙個小矮人站在另一小矮人的 肩膀上,知道最頂端的小矮人伸直胳膊可以碰到陷阱口。對於每乙個小矮人,我們知道他從腳到肩膀的高度ai,並且他的胳膊長度為bi。陷阱深度為h。如果我 們利用矮人1,矮人2,矮人3,矮人k搭乙個梯子...
TJOI2013 拯救小矮人 排序 dp
題目鏈結 imagine的完美回答 重點大概是證明我們選出要救的小矮人一定可以根據 a i b i 的大小進行排序救出。注意這裡關注的物件是可以保留的高度,所以我們的dp值才會表示成最少減少的高度。includeusing namespace std define go u for int i he...