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種氣體的氣缸 乙個為氧氣,乙個為氮氣。讓火炬手需要各種的數量的氧和 氮。火炬手有一定數量的氣缸。每個氣缸都有重量和氣體容...