洛谷P2240 部分揹包問題 貪心

2021-10-04 23:26:57 字數 618 閱讀 4693

洛谷p2240

樣例:

輸入:450

1060

20100

30120

1545

輸出:240.00

思路:與動態規劃的揹包問題不同,此處的金幣是可以隨意分割的,我們可以運用貪心,優先選取最合適的金幣堆。怎麼優先選擇呢??題中說道:「分割完的金幣重量價值比(也就是單位**)不變」。所以可以優先選擇單位**大的金幣堆。

ac**:

#include

using

namespace std;

struct node

a[105];

bool

cmp(

const node &a,

const node &b)

intmain()

else

//不能放下整堆金幣

}printf

("%.2f\n"

,sum)

;return0;

}

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

思路 先定義三個陣列儲存每一堆金幣的價值,重量,價效比,然後用氣泡排序按價效比從大到小排序,最後將價效比大的先與揹包的重量比較 此處就是貪心的思想,區域性優解到全域性優解 再分兩種情況討論,最後輸出帶走金幣的價值即可 include using namespace std int n double ...

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

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

揹包問題(1)部分揹包

1.現有4個揹包,已知每個物品的體積和價值,每個揹包最多容納10個體積的物品,每件物品只能拿一次,問怎麼樣裝使揹包的價值最大?分析 1 二維陣列求法 如果包的體積由0變化到10,每次物品只能放一次,則包內所放物品的價值量為 則包所放的最大價值即二維陣列的最後乙個值 如下 include using ...