題目:
某港口有一批貨櫃,將其編號,分別為1至n。每乙個箱子的外型尺寸都是一樣的,現在要將其中某些貨櫃疊放起來,貨櫃疊放的規則如下:
1)每個貨櫃上最多只能直接疊放乙個貨櫃。
2)編號較小的貨櫃不能放在編號較大的貨櫃之上。
3)每個貨櫃都給出了自身的重量和可承受的重量,每個貨櫃之上的所有貨櫃重量之和不得超過該貨櫃的可承受的重量。
現在要求你程式設計,從中選出最多個貨櫃,使之在滿足以上條件的情況下疊放起來,即要求疊得盡可能地高。
輸入:第一行是乙個正整數n,表示共有n個貨櫃(1≤ n ≤1000)。
以下共有n行,每行兩個正整數,中間用空格分隔,分別表示每個貨櫃的自身重量和可承受的重量,兩個數均為小於等於3000。
輸出:輸出最多可疊放的貨櫃總數。執行時間不超過去時10秒。
樣例輸入:
5 19 15
7 13
5 7
6 8
1 2樣例輸出:
4思路:
設f[i,j]
表示第i
個箱子到第
n個箱子中總重量為
j的最大箱
子數。
考慮第i
個箱子放與不放的情況。
注意:能選的條件是j>=a[i])&&(b[i]>=j-a[i]。
**:#include
#include
#define rr register
using namespace std;
int n,a[1002],b[1002],f[1002][6001],ans;//a自身重量。//b承受重量。
int main()
for (rr int i=0;i<=6000;++i)
ans=max(ans,f[1][i]);
printf("%d",ans);//輸出。
return 0;//完美的返回。
}
DP 疊放箱子
某港口有一批貨櫃,將其編號,分別為1至n。每乙個箱子的外型尺寸都是一樣的,現在要將其中某些貨櫃疊放起來,貨櫃疊放的規則如下 1 每個貨櫃上最多只能直接疊放乙個貨櫃。2 編號較小的貨櫃不能放在編號較大的貨櫃之上。3 每個貨櫃都給出了自身的重量和可承受的重量,每個貨櫃之上的所有貨櫃重量之和不得超過該貨櫃...
疊放箱子問題
疊放箱子問題 description 某港口有一批貨櫃,將其編號,分別為1至n。每乙個箱子的外型尺寸都是一樣的,現在要將其中某些貨櫃疊放起來,貨櫃疊放的規則如下 1 每個貨櫃上最多只能直接疊放乙個貨櫃。2 編號較小的貨櫃不能放在編號較大的貨櫃之上。3 每個貨櫃都給出了自身的重量和可承受的重量,每個貨...
疊放箱子問題
疊放箱子問題 time limit 10000ms memory limit 65536k total submit 309 accepted 115 case time limit 1000ms description 某港口有一批貨櫃,將其編號,分別為1至n。每乙個箱子的外型尺寸都是一樣的,現在...