時間限制: 1 sec 記憶體限制: 256 mb
題目描述
fj有一架用來稱牛的體重的天平。與之配套的是n(1<=n<=1000)個已知質量的砝碼(所有砝碼質量的數值都在31位二進位制內)。每次稱牛時,他都把某頭奶牛安置在天平的某一邊,然後往天平另一邊加砝碼,直到天平平衡,於是此時砝碼的總質量就是牛的質量(fj不能把砝碼放到奶牛的那邊,因為奶牛不喜歡稱體重,每當fj把砝碼放到她的蹄子底下,她就會嘗試把砝碼踢到fj臉上)。天平能承受的物體的質量不是無限的,當天平某一邊物體的質量大於c(1<=c<2^30)時,天平就會被損壞。
砝碼按照它們質量的大小被排成一行。並且,這一行中從第3個砝碼開始,每個砝碼的質量至少等於前面兩個砝碼(也就是質量比它小的砝碼中質量最大的兩個)的質量的和。
fj想知道,用他所擁有的這些砝碼以及這架天平,能稱出的質量最大是多少。
由於天平的最大承重能力為c,他不能把所有砝碼都放到天平上。
現在fj告訴你每個砝碼的質量,以及天平能承受的最大質量。你的任務是選出一些砝碼,使它們的質量和在不壓壞天平的前提下是所有組合中最大的。
輸入第1行: 兩個用空格隔開的正整數,n和c。
第2…n+1行: 每一行僅包含乙個正整數,即某個砝碼的質量。保證這些砝碼的質量是乙個不下降序列。
輸出乙個正整數,表示用所給的砝碼能稱出的不壓壞天平的最大質量。
樣例輸入
3151
1020
樣例輸出11
提示
fj有3個砝碼,質量分別為1,10,20個單位。他的天平最多只能承受質量為15個單位的物體。用質量為1和10的兩個砝碼可以稱出質量為11的牛。這3個砝碼所能組成的其他的質量不是比11小就是會壓壞天平。
思路因為目的是尋找砝碼可以組成的在天平承受範圍內的最大重量,我們又不知道哪些可以組成最大值,所以我們可以使用dfs來搜尋最佳組合,中間可以用字首和進行優化
**:
#include
#include
#include
#include
#include
#include
#define ll long long
using
namespace std;
const
int n=
1e7+10;
ll c,ans,a[
1010
],f[
1010];
void
dfs(ll n,ll sum)
}int
main()
for(
int i=
0;i)dfs
(n,0);
cout
}
雷射炸彈 UPC二維字首和
題目描述 一種新型的雷射炸彈,可以摧毀乙個邊長為r的正方形內的所有的目標。現在地圖上有n n 10000 個目標,用整數xi,yi 0 xi,yi 5000 表示目標在地圖上的位置,每個目標都有乙個價值0 vi 100。雷射炸彈的投放是通過衛星定位的,但其有乙個缺點,就是其爆破範圍,即那個邊長為r的...
盾神與砝碼稱重 DFS
問題 1548 藍橋杯 演算法提高vip 盾神與砝碼稱重 時間限制 1sec 記憶體限制 128mb 提交 504 解決 183 題目描述 有一天,他在宿舍裡無意中發現了乙個天平!這 個天平很奇怪,有n個完好的砝碼,但是沒有遊碼。盾神為他的發現興奮不已!於是他準備去稱一稱自己的東西。他準備好了m種物...
upc 單詞表 字典樹 dfs
單詞表 時間限制 1 sec 記憶體限制 128 mb 題目描述 hzwer獲得了乙個n個單詞的單詞表,其中每個字元都是小寫字母,現在,他想和他的妹子研究一下這個單詞表。設編號為u的單詞與編號為v的單詞 u 最近複習了下字典樹,讓後在巨巨的指導下補了這個題。字典樹在統計字首字尾都比較好用。在構建字典...