拯救小矮人 codevs 2544

2022-05-15 03:52:01 字數 973 閱讀 1122

一群小矮人掉進了乙個很深的陷阱裡,由於太矮爬不上來,於是他們決定搭乙個人梯。即:乙個小矮人站在另一小矮人的肩膀上,知道最頂端的小矮人伸直胳膊可以碰到陷阱口。對於每乙個小矮人,我們知道他從腳到肩膀的高度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

/*

由題意可以知道,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;

}

view code

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...