藍橋第六周 奧運火炬登珠峰

2021-07-09 02:24:27 字數 1543 閱讀 9518

rqnqj pid202 / 奧運火炬登珠峰

題目描述 description

5月8日,在世界人民的共同關注下,象徵著和平、友誼、聖潔的奧運火炬終於來到了世界之巔——珠穆朗瑪峰……登上珠峰可不是所有人都能辦得了的,火炬手們為了登山要使用特殊的裝備。他有乙個帶2種氣體的氣缸:乙個為氧氣,乙個為氮氣。讓火炬手需要各種的數量的氧和氮。火炬手有一定數量的氣缸。每個氣缸都有重量和氣體容量。火炬手為了完成傳遞需要特定數量的氧和氮。他完成傳遞所需氣缸的總重的最低限度的是多少?

例如:火炬手有5個氣缸。每行三個數字為:氧,氮的(公升)量和氣缸的重量:

3 36 120

10 25 129

5 50 250

1 45 130

4 20 119

如果火炬手需要5公升的氧和60公升的氮則總重最小為249 (1,2或者4,5號氣缸)。你的任務就是計算火炬手為了完成傳遞需要的氣缸的重量的最低值。

輸入描述 input description

第一行有2整數t,a(1<=t<=21,1<=a<=79)。它們表示氧,氮各自需要的量。

第二行為整數n (1<=n<=1000)表示氣缸的個數。

此後的n行,每行包括ti,ai,wi(1<=ti<=21,1<=ai<=79,1<=wi<=800)3整數。這些各自是:第i個氣缸裡的氧和氮的容量及汽缸重量。

輸出描述 output description

僅一行包含乙個整數,為火炬手完成傳遞所需的氣缸的重量總和的最低值。

樣例輸入 sample input

5 60

53 36 120

10 25 129

5 50 250

1 45 130

4 20 119

樣例輸出 sample output

249[解題思路]

這型別的題是由01揹包問題的一維陣列解法擴充套件而來的,既然是擴充套件,那就是在原來的基礎上改變即可,要注意的是這裡需要滿足的條件有兩個(至少需要多少氧氣和氮氣),而之前的01揹包需要滿足的條件只有乙個(不超過揹包容量的情況下)。故可用二維陣列來儲存,另一點需要注意的是在01揹包中,是不超過揹包容量,故v>=weight才繼續,而這裡是至少要有多少氧氣和氮氣,故k(氮氣)>=0,j(氧氣)>=0,而當氧氣和氮氣滿足,即超過所需的,都存在dp[oxygen][nitrogen]。

[**實現]

#includeusing namespace std;

int min(int a,int b)

for (int i=0;i<22;i++) }

dp[0][0]=0;

for(int i=0;i=0;j--)

for (int k=nitrogen;k>=0;k--) /* 與01揹包的最大容量不同v>=weight[i],因為這裡要求的是要等於或者超過,而不是不超過 */}}

cout<

題目 奧運火炬登珠峰

5月8日,在世界人民的共同關注下,象徵著和平 友誼 聖潔的奧運火炬終於來到了世界之巔 珠穆朗瑪峰 登上珠峰可不是所有人都能辦得了的,火炬手們為了登山要使用特殊的裝備。他有乙個帶2種氣體的氣缸 乙個為氧氣,乙個為氮氣。讓火炬手需要各種的數量的氧和氮。火炬手有一定數量的氣缸。每個氣缸都有重量和氣體容量。...

RQNOJ 202 奧運火炬登珠峰

5月8日,在世界人民的共同關注下,象徵著和平 友誼 聖潔的奧運火炬終於來到了世界之巔 珠穆朗瑪峰 登上珠峰可不是所有人都能辦得了的,火炬手們為了登山要使用特殊的裝備。他有乙個帶2種氣體的氣缸 乙個為氧氣,乙個為氮氣。讓火炬手需要各種的數量的氧和氮。火炬手有一定數量的氣缸。每個氣缸都有重量和氣體容量。...

動態規劃 RQ202 奧運火炬登珠峰

5月8日,在世界人民的共同關注下,象徵著和平 友誼 聖潔的奧運火炬終於來到了世界之巔 珠穆朗瑪峰 登 上珠峰可不是所有人都能辦得了的,火炬手們為了登山要使用特殊的裝備。他有乙個帶2種氣體的氣缸 乙個為氧氣,乙個為氮氣。讓火炬手需要各種的數量的氧和 氮。火炬手有一定數量的氣缸。每個氣缸都有重量和氣體容...