題目描述
阿里巴巴走進了裝滿寶藏的藏寶洞。藏寶洞裡面有 n(n \le 100)n(n≤100) 堆金幣,第 ii 堆金幣的總重量和總價值分別是 m_i,v_i(1\le m_i,v_i \le 100)mi
,vi (1≤mi
,vi ≤100)。阿里巴巴有乙個承重量為 t(t \le 1000)t(t≤1000) 的揹包,但並不一定有辦法將全部的金幣都裝進去。他想裝走盡可能多價值的金幣。所有金幣都可以隨意分割,分割完的金幣重量價值比(也就是單位**)不變。請問阿里巴巴最多可以拿走多少價值的金幣?
輸入格式
第一行兩個整數 n,tn,t。
接下來 nn 行,每行兩個整數 m_i,v_imi
,vi 。
輸出格式
乙個實數表示答案,輸出兩位小數
輸入輸出樣例
輸入 #1 複製
4 50
10 60
20 100
30 120
15 45
輸出 #1 複製
240.00
這是一道貪心題,每次價效比是當前最優即可
#include
#include
#include
#include
using
namespace std;
const
int n =
150;
int n;
double m;
struct bag
}a[n]
;int
main()
;}sort
(a, a + n)
;double res =0;
for(
int i =
0; i < n; i ++)}
printf
("%.2lf\n"
, res)
;return0;
}
P2240 深基12 例1 部分揹包問題(洛谷)
思路 先定義三個陣列儲存每一堆金幣的價值,重量,價效比,然後用氣泡排序按價效比從大到小排序,最後將價效比大的先與揹包的重量比較 此處就是貪心的思想,區域性優解到全域性優解 再分兩種情況討論,最後輸出帶走金幣的價值即可 include using namespace std int n double ...
洛谷P2240 部分揹包問題 貪心
洛谷p2240 樣例 輸入 450 1060 20100 30120 1545 輸出 240.00 思路 與動態規劃的揹包問題不同,此處的金幣是可以隨意分割的,我們可以運用貪心,優先選取最合適的金幣堆。怎麼優先選擇呢?題中說道 分割完的金幣重量價值比 也就是單位 不變 所以可以優先選擇單位 大的金幣...
洛谷P2249 深基13 例1 查詢 二分
題目鏈結 是個好題目,和平時的二分不同的是,這個需要找到lower bound 的結果。那麼就二分到只有乙個數的時候再判斷,否則x a mid 就搜左邊,x a mid 就搜右邊,就可以實現lower bound 的效果。如下,仔細品味 include include include include...