時間限制:1 秒
記憶體限制:128 兆
特殊判題:否
提交:690
解決:167
題目描述:給定n個物品的重量和兩艘載重量分別為c1和c2的船,問能否用這兩艘船裝下所有的物品。
輸入:輸入包含多組測試資料,每組測試資料由若干行資料組成。
第一行為三個整數,n c1 c2,(1 <= n <= 100),(1<=c1,c2<=5000)。
接下去n行,每行乙個整數,代表每個物品的重量(重量大小不大於100)。
輸出:對於每組測試資料,若只使用這兩艘船可以裝下所有的物品,輸出yes。
否則輸出no。
樣例輸入:
3 5 86333 5 853
4
樣例輸出:
noyes
問題是看兩個船能不能把所有物品運走,可以分析為乙個船運走的最大物體重量,剩下的檢視重量是不是超過另乙個船的運力。就是在一條船上盡可能多的放置貨物,然後看剩下的貨物另外一條船能否裝下。
#include #include #include using namespace std;
//::vectorwts;
int boatw[101]=;
int dp[5001]=;
int sumw = 0;
void init(int n)
// *dp = new int[boat1 + 1];
memset(dp,0,(smallboat+1)*sizeof(int));
for(int i = 1;i=boatw[i]; j--)
}if(sumw - dp[smallboat] <=bigboat )else
printf("no\n"); }
void judo(){
int n;
int boat1;
int boat2;
while(scanf("%d %d %d",&n,&boat1,&boat2)!=eof){
init(n);
if(boat1