description
一群小矮人掉進了乙個很深的陷阱裡,由於太矮爬不上來,於是他們決定搭乙個人梯。即:乙個小矮人站在另一小矮人的 肩膀上,知道最頂端的小矮人伸直胳膊可以碰到陷阱口。對於每乙個小矮人,我們知道他從腳到肩膀的高度ai,並且他的胳膊長度為bi。陷阱深度為h。如果我 們利用矮人1,矮人2,矮人3,。。。矮人k搭乙個梯子,滿足a1+a2+a3+….+ak+bk>=h,那麼矮人k就可以離開陷阱逃跑了,一 旦乙個矮人逃跑了,他就不能再搭人梯了。
我們希望盡可能多的小矮人逃跑, 問最多可以使多少個小矮人逃跑。
input
第一行乙個整數n, 表示矮人的個數,接下來n行每一行兩個整數ai和bi,最後一行是h。(ai,bi,h<=10^5)
output
乙個整數表示對多可以逃跑多少小矮人
sample input
樣例12
20 10
5 5
30樣例2
2 20 10
5 5
35sample output
樣例1
2 樣例2
1hint
資料範圍
30%的資料 n<=200
100%的資料 n<=2000
首先如果在所有東西都確定好的情況下 考慮最上方的兩個矮人 如果都能出去交換 不影響 都不能出去 交換 不影響 有影響的僅僅在於交換之後可能乙個出不去了 那這種情況下 一定是臂展加身高最長的放在下面會更好 但是並不是所有情況都是這樣好 但是可以確定的是在滿足條件下這樣一定最好所以先這樣排序 然後去dp即可 設dp[i]表示走了i個矮人的最高距離 不能列舉走了幾個 而是應該列舉這一輪是誰走的避免算重
#include
#include
#include
using
namespace
std;
inline
char gc()
return *s++;
}inline
int read()
while(isdigit(ch)) x=x*10+ch-'0',ch=gc();
return x*f;
}const
int n=2020;
struct nodep[n];
inline
bool cmp(const node &a,const node &b)if (dp[j+1]) ans=max(ans,j+1);
}}printf("%d\n",ans);
return
0;}
bzoj3174 TJOI2013 拯救小矮人
time limit 1 sec memory limit 128 mb submit 573 solved 293 submit status discuss 一群小矮人掉進了乙個很深的陷阱裡,由於太矮爬不上來,於是他們決定搭乙個人梯。即 乙個小矮人站在另一小矮人的 肩膀上,知道最頂端的小矮人伸直...
bzoj3174 TJOI2013 解救小矮人
time limit 1 sec memory limit 128 mb submit 573 solved 293 submit status discuss 一群小矮人掉進了乙個非常深的陷阱裡,因為太矮爬不上來,於是他們決定搭乙個人梯。即 乙個小矮人站在還有一小矮人的 肩膀上。知道最頂端的小矮人...
BZOJ5334 Tjoi2018 數學計算
time limit 10 sec memory limit 256 mb submit 234 solved 155 小豆現在有乙個數x,初始值為1.小豆有q次操作,操作有兩種型別 1 m x x m 輸出 x mod 2 pos x x 第pos次操作所乘的數 保證第pos次操作一定為型別1,對...