洛谷 P2240 深基12 例1 部分揹包問題

2021-10-09 20:14:40 字數 988 閱讀 2084

題目描述

阿里巴巴走進了裝滿寶藏的藏寶洞。藏寶洞裡面有 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...