洛谷P1120 小木棍 資料加強版 搜尋

2022-05-09 18:57:50 字數 683 閱讀 8375

玄學剪支,正好複習一下搜尋

感覺搜尋題的套路就是先把整體框架打出來,然後再一步一步優化剪枝

1.從maxv到sumv/2列舉長度(想一想,為什麼)

2. 開乙個桶,從大到小開始列舉

3. 在搜尋中,列舉到長度為x的木棍,則下一步也從x開始列舉

4. 如果當前長度為0或target卻無解則break掉,很玄學qaq….

#include

#include

#include

using

namespace

std;

const

int maxn = 4000;

int w[maxn];

int sumv, minv, maxv;

void dfs(int nums,int cur,int target,int p)

if(cur == target)

for(int i = p;i >= minv;--i)

if(w[i] && i + cur <= target)

return;

}int main()

for(int i = maxv;i <= sumv/2; ++i)

printf("%d",sumv);

return

0;}

洛谷 P1120 小木棍 資料加強版

題目 小木棍 思路 搜尋 剪枝。外層迭代加深,列舉最小長度,用dfs判斷。dfs維護3個變數x,y,lst,即用了x根木棍,當前拼到了y,上一根木棍的長度為lst。然後列舉拼接的木棍就好。剪枝一 從大到小排序。剪枝二 如果y不為0,那麼列舉的木棍長不要大於lst,不然就會重複搜尋。剪枝三 如果y 0...

洛谷 P1120 小木棍 資料加強版

喬治有一些同樣長的小木棍,他把這些木棍隨意砍成幾段,直到每段的長都不超過5050。現在,他想把小木棍拼接成原來的樣子,但是卻忘記了自己開始時有多少根木棍和它們的長度。給出每段小木棍的長度,程式設計幫他找出原始木棍的最小可能長度。搜尋加剪枝 剪枝 1 使用桶排,因為長度不超過50。2 列舉的長度應該能...

洛谷P1120 小木棍 資料加強版

喬治有一些同樣長的小木棍,他把這些木棍隨意砍成幾段,直到每段的長都不超過50。現在,他想把小木棍拼接成原來的樣子,但是卻忘記了自己開始時有多少根木棍和它們的長度。給出每段小木棍的長度,程式設計幫他找出原始木棍的最小可能長度。共二行。第一行為乙個單獨的整數n表示砍過以後的小木棍的總數,其中n 65 管...