臨近開學了,大家都忙著收拾行李準備返校,但 i_love_c 卻不為此擔心! 因為他的心思全在暑假作業上:目前為止還未開動。
暑假作業是很多張試卷,我們這些從試卷裡爬出來的人都知道,卷子上的題目有選擇題、填空題、簡答題、證明題等。而做選擇題的好處就在於工作量很少,但又因為選擇題題目都普遍很長。如果有 5
5 張試卷,其中 4
4 張是選擇題,最後一張是填空題,很明顯做最後一張所花的時間要比前 4
4 張長很多。但如果你只做了選擇題,雖然工作量很少,但表面上看起來也已經做了 \frac54
的作業了。
i_love_c決定就用這樣的方法來蒙混過關,他統計出了做完每一張試卷所需的時間以及它做完後能得到的價值(按上面的原理,選擇題越多價值當然就越高咯)。
現在就請你幫他安排一下,用他僅剩的一點時間來做最有價值的作業。
測試資料報括多組。每組測試資料以兩個整數 m,n(1\leq m\leq 20, 1\leq n\leq 10000)m,
n(1≤
m≤20
,1≤n
≤100
00) 開頭,分別表示試卷的數目和 i_love_c 剩下的時間。接下來有 m
m 行,每行包括兩個整數 t,v(1\leq t\leq n,0t,
v(1≤
t≤n,
0<
v<10
000)
,分別表示做完這張試卷所需的時間以及做完後能得到的價值,輸入以 0\:000
結束。對應每組測試資料輸出 i_love_c 能獲得的最大價值。保留小數點 22 位
float 的精度可能不夠,你應該使用 double 型別。
樣例輸入
4 204 10
5 22
10 3
1 20 0
樣例輸出
37.00
#include#includeusing namespace std;
struct hm{
double t,v;
double tv;
bool operator < (const hm &x) const{
return tv思路:自己寫乙個struct用於儲存作業型別,包含作業費時(double t)、作業價值(double v)、作業價效比(double tv)(後續寫的程式裡其實tv是**/效能也即t/v,此題中作業消耗的時間相當於商品的**(要花費掉的),作業的價值相當於商品的效能(帶來價值的)),並且過載小於運算子,使得通過後續sort函式能夠將tv小的hm類排在前面。main函式中需要注意:有多組輸入,以0 0作為結束,因此對輸入進行特殊判斷。
總結:1、假如用scanf對float型別的變數輸入,但是錯誤寫成scanf("%d, &x); 程式不會報錯,但是x的值會變成0.00,一定要注意
2、%lf用於輸入double型別變數,%f用於輸入float型別變數。
繼續加油!
計蒜客題目 加一
陣列內存放了一些個位數字,組成乙個大數 從高位到低位 現在將這個數加 1,並輸出加一以後的結果。例如 a 2,3,1,1,4 則結果為 2,3,1,1,5 a 7,8,9 則結果為 7,9,0 第一行輸入乙個正整數 n 1 n 100 接下來的一行,輸入用空格分隔的 n 個 0 到 9 的非負整數組...
計蒜客題目 奇怪的國家
有乙個奇怪的國家,裡面的國民對於事情的態度永遠只有兩面。當兩個人遇到一起討論乙個事情的時候 兩個持贊同觀點的人遇到一起後會對這個事情都繼續贊同 乙個持贊同觀點的人遇到乙個持不贊同觀點的人的時候,兩人都會不再繼續贊同 兩個持不贊同觀點的人遇到一起討論後反而會對這個事情開始贊同。輸入包括兩行,每行包括 ...
計蒜客題目 最大子陣列
在乙個陣列中找出和最大的連續幾個數。至少包含乙個數 例如 陣列a 2,1,3,4,1,2,1,5,4 則連續的子串行 4,1,2,1 有最大的和6.輸入格式 第一行輸入乙個不超過1000的整數n。第二行輸入n個整數a i 輸出格式 第一行輸出乙個整數,表示最大的和。樣例輸入 3 1 1 2樣例輸出 ...