uva
luogu remotejudge需登uva
luogu 加強版
每組資料給出n根小木棍,把它們拼接成若干根長度相等的木棍,求該長度的最小值。
這題似乎就是暴搜加剪枝優化,不過剪枝比較複雜。
先上**:
#include
using
namespace std;
int a[
100]
,v[100
],n,len,cnt;
//正在拼 當前長度 上一根小木棍
bool
dfs(
int stick,
int cab,
int last)
}return
false;}
intmain()
sum+
=a[i]
; val=
max(val,a[i]);
}sort
(a+1
,a+n+1)
;reverse
(a+1
,a+n+1)
;for
(len=val;len<=sum;len++
) cout<}return0;
}
當前長棍剩餘的未拼長度等於當前木棍的長度時,這根木棍在最優情況下顯然是拼到這(如果用更多短木根拼完剩下的這段,把這根木棍留到後面顯然不如把更多總長相等的短木棍扔到後面)。如果在最優情況下繼續拼下去失敗了,那肯定是之前的木棍用錯了,回溯改即可。
2019-7-31
算進 小木棍
acwing 題目位址 洛谷 題目位址 做完16 16的數獨後感覺這些搜尋題都是小清新。但是小木棍這題還是煩了我特別久,因此來寫篇題解吧,總結一下。這題無非就是兩個剪枝,優化搜尋順序 去掉等效狀態 talk is cheap.show me the code.includeusing namespa...
小木棍 搜尋剪枝
小木棍,多麼經典的題目啊,幾年都拿出來做一下,今年終於感覺有點明白了 真為中年婦女的智商著急啊 題解抄的luogu題解,修改了以前抄的 終於ac了.主要難點在於如何進行dfs的剪枝可以二分答案 不二分也不會超時,我的 沒有二分 dfs看看這個答案可不可行雖然資料很小,直接dfs也是會超時的,所以需要...
洛谷 小木棍
description 喬治有一些同樣長的小木棍,他把這些木棍隨意砍成幾段,直到每段的長都不超過50 現在,他想把小木棍拼接成原來的樣子,但是卻忘記了自己開始時有多少根木棍和它們的長度。給出每段小木棍的長度,程式設計幫他找出原始木棍的最小可能長度。input 第一行為乙個單獨的整數 n表示砍過以後的...