upc no.21場 問題 g: 八目鰻
時間限制: 1 sec 記憶體限制: 128 mb
題目描述
公尺斯蒂婭去捕捉八目鰻為開店作準備。現在,她在乙個有八目鰻的池塘邊。她知道池塘裡的有n條八目鰻,把第i條八目鰻從池塘弄回小店需要ti∗2個單位的時間(畢竟需要往返)。
這些八目鰻會自己吃p點!隨著時間的推移,公尺斯琪把它們弄回來所消耗的體力與時間成正比,即在第t個時刻開始運第i條八目鰻所消耗的體力為t∗ci,其中,ci是給定的常數。一開始所有的八目鰻都沒有p點,也就是說運送第一條八目鰻所消耗的體力為0。
公尺斯琪想知道把所有八目鰻運回小店所消耗的體力最少是多少。
輸入第一行輸入乙個整數n,表示八目鰻的數量。
接下來n行,每行包含兩個整數ti,ci。
輸出乙個整數,表示最少消耗的體力。
樣例輸入 copy
63 1
2 52 3
3 24 1
1 6樣例輸出 copy
86提示
對於10%的資料,n≤10,t≤100,ci≤10;
對於60%的資料,n≤1000,t≤20000,ci≤100;
對於100%的資料,n≤100000,t≤2000000,ci≤100。
題解:這道題主要在理解,理解了就很好做,理解不了,em…可以洗洗睡了qaq,會讓人很炸裂。本來打算用完全揹包寫的,但是後來發現完全可以不用。「ti∗2個單位的時間」 表示:前面運回去幾條魚的時間 總和為ti。拿樣列來說,假如已經運了兩條,那麼第三條就要花費(3+2)*2個時間,所以不需要完全揹包就可以寫,這樣貪心比揹包更快。
需要根據以上的價效比排個序【畫個重點】。
下面附ac**:
#include
#define ll long long
#define x first
#define y second
using
namespace std;
typedef pair<
int,
int> pii;
const
int n=
1e5+
1000
;pii q[n]
;int n;
bool
cmp(pii a,pii b)
intmain()
cout<
}