洛谷 小木棍

2021-10-14 09:37:30 字數 1870 閱讀 3970

description

喬治有一些同樣長的小木棍,他把這些木棍隨意砍成幾段,直到每段的長都不超過50 。

現在,他想把小木棍拼接成原來的樣子,但是卻忘記了自己開始時有多少根木棍和它們的長度。

給出每段小木棍的長度,程式設計幫他找出原始木棍的最小可能長度。

input

第一行為乙個單獨的整數 n表示砍過以後的小木棍的總數。

第二行為 n個用空格隔開的正整數,表示 n根小木棍的長度。

output

輸出僅一行,表示要求的原始木棍的最小可能長度。

sample input

95 2 1 5 2 1 5 2 1

sample output

6more info

1<=n<=60

主要思路:dfs、剪枝

先尋找可能滿足條件的從小到大dp,看已知的n段小木棍能否拼成tot/i 段i長的小木棍,如果能則輸出當前i,結束程式。如果均不能則輸出tot。(思路**一位dalao)

#include

#include

int max,min=

100,book[51]

;void

dfs(

int rec,

int sum,

int lon,

int now,

int next)

while

(book[next]==0

)//如果沒有接下來要拼湊的長度的木棍

next--

;//繼續尋找更短的木棍

if(lon==sum)

//如果成功利用小木棍拼成lon長的木棍

if(now>next)

now=next;

//防止now長的木棍不存在

if(now>lon-sum)

//將現存的最長的與拼成lon還需要的長度比較

i=lon-sum;

else

i=now;

for(

;i>=min;i--)}

}int

main()

for(i=max;i<=tot;i++

)//木棍長度一定》=最長的一段

if(tot%i==0)

//剪枝

dfs(tot/i,

0,i,max,max)

;printf

("%d"

,tot)

;return0;

}

description

ncust要製作乙個體積為 nπ 的  m層生日蛋糕,每層都是乙個圓柱體。
設從下往上數第 i 層蛋糕是半徑為ri ,高度為 hi 的圓柱。當 ir(i+1) 且hi>h(i+1) 。由於要在蛋糕上抹忌廉,為盡可能節約經費,我們希望蛋糕外表面(最下一層的下底面除外)的面積 q最小。

令 q=sπ,請程式設計對給出的 n和 m ,找出蛋糕的製作方案(適當的 ri和 hi 的值),使 s最小。(除 q 外,以上所有資料皆為正整數)

input

第一行為 n,表示待製作的蛋糕的體積為 nπ;

第二行為 m,表示蛋糕的層數為 m 。

output

輸出僅一行,乙個整數s (若無解則 s=0 )。

sample input

1002

sample output

more info

對於全部資料:1<=n<=10^4,1<=m<=20

洛谷1120小木棍

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

洛谷 1120 小木棍 資料加強版

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

洛谷 1120 小木棍(資料加強版)

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