農夫約翰打算建立乙個柵欄將他的牧場給圍起來,因此他需要一些特定規格的木材。於是農夫約翰到木材店購買木材。可是木材店老闆說他這裡只剩下少部分大規格的木板了。不過約翰可以購買這些木板,然後切割成他所需要的規格。而且約翰有一把神奇的鋸子,用它來鋸木板,不會產生任何損失,也就是說長度為10的木板可以切成長度為8和2的兩個木板。
你的任務:給你約翰所需要的木板的規格,還有木材店老闆能夠給出的木材的規格,求約翰最多能夠得到多少他所需要的木板。
第一行為整數m(m<= 50)表示木材店老闆可以提供多少塊木材給約翰。緊跟著m行為老闆提供的每一塊木板的長度。
接下來一行(即第m+2行)為整數n(n <= 1000),表示約翰需要多少木材。
接下來n行表示他所需要的每一塊木板的長度。木
#include#include#include
#include
#include
#include
#include
using
namespace
std;
const
int n=1050
;int
a[n],b[n],c[n],n,mid,m,w,tot,sum[n],ans;
bool check(int h,int
last)
}return0;
}int
main()
scanf("%d
",&m);
for(int i=1;i<=m;i++)
sort(b+1,b+m+1
);
for(int i=1;i<=m;i++)
sum[i]=sum[i-1]+b[i];
while(sum[m]>tot) m--;
int l=1,r=m;
while(l<=r)
else r=mid-1
; }
if(l==2) printf("
0\n"
);
else printf("
%d\n
",l-1
);
return0;
}
材的規格小於32767。(對於店老闆提供的和約翰需要的每塊木板,你只能使用一次)。
只有一行,為約翰最多能夠得到的符合條件的木板的個數。
輸入 #1複製
43040
5025
1015
1617
1819
2021
2524
30
輸出 #1複製
7
輸入 #2複製
32010109
3335
5788
9
輸出 #2複製
7題解:dfs+剪枝+二分查詢(不是太難但是是紫題嘿嘿。)
洛谷P2731騎馬修柵欄
farmer john每年有很多柵欄要修理。他總是騎著馬穿過每乙個柵欄並修復它破損的地方。john是乙個與其他農民一樣懶的人。他討厭騎馬,因此從來不兩次經過乙個柵欄。你必須編乙個程式,讀入柵欄網路的描述,並計算出一條修柵欄的路徑,使每個柵欄都恰好被經過一次。john能從任何乙個頂點 即兩個柵欄的交點...
洛谷 P2205 USACO13JAN 畫柵欄
這題其實沒什麼,但用到的演算法都十分有用。做乙個不恰當的比喻,這是乙隻必須用牛刀殺的雞,但因為我這個蒟蒻殺不死牛,所以只能找只雞來練練手。題目描述 farmer john 想出了乙個給牛棚旁的長圍牆塗色的好方法。為了簡單起見,我們把圍牆看做一維的數軸,每乙個單位長度代表一塊柵欄 他只是簡單的把刷子蘸...
洛谷 P2731 騎馬修柵欄 尤拉路與尤拉迴路
給出m mm條邊,求出一條尤拉路,起點任意,終點任意,每條邊只經過一次。要求給出的尤拉路字典序最小。1 m 1024,1 n 500 1 leq m leq 1024,1 leq n leq 500 1 m 1 024,1 n 500 先總結一下有向圖 無向圖求尤拉路與尤拉迴路的性質。無向圖 有且僅...