第六天 大雜燴雜燴

2021-10-01 07:08:08 字數 1748 閱讀 8764

農夫約翰想修復牧場周圍的一小部分籬笆。他測量圍欄,並發現他需要ñ(1≤ ñ ≤20000)厚木板,每乙個都具有一些整數長度大號我(1≤ 大號我 ≤50000)單元。然後,他購買了一塊足夠長的單塊長板,足以切入n塊木板(即,其長度為長度l i的總和)。fj忽略了「鋸縫」,即鋸切時因鋸末而損失的額外長度;您也應該忽略它。

fj遺憾地意識到自己沒有切割木頭的鋸子,於是用長木板將其鑲嵌到farmer don』s farm上,禮貌地詢問他是否可以借用鋸子。

壁櫥資本家農夫唐(farmer don)不借給fj鋸,而是提議就木板中的n -1個切口向農夫約翰收費。切割一塊木頭的費用恰好等於其長度。切割一塊長度為21的木板的成本為21美分。

然後,農夫唐讓農夫約翰決定切割木板的順序和位置。幫助農夫約翰確定他可以用來製作n塊木板的最低金額。fj知道他可以按各種不同的順序切割木板,這將導致不同的費用,因為最終的中間木板長度不同。

輸入項

第1行:乙個整數n,木板數

第2行。n +1:每行包含乙個整數,描述所需木板的長度

輸出項

第1行:乙個整數:要進行n -1次削減,他必須花費的最低金額

樣本輸入3

858樣本輸出34

暗示

他想將一塊長度為21的木板切成長度分別為8、5和8

的一塊。原始木板的尺寸為8 + 5 + 8 = 21。第一次切割的成本為21,應用於將電路板切割成13和8的尺寸。第二次切割的成本為13,應用於將13切割為8和5的尺寸。這將成本21 + 13 = 34 。如果將21削減為16,將5削減,則第二次削減將花費16,總共37(超過34)。

這道題應該是乙個哈夫曼樹問題 直接上**

1.

typedef

long

long ll;

//輸入

int n,l[maxn]

;void

solve()

else

if(l[i]

//將這兩塊板合併

int t=l[mii1]

+l[mii2]

; ans+

=t;//此處還不太懂 明天問問學長

if(mii1==n-1)

swap

(mii1,mii2)

; l[mii1]

=t; l[mii2]

=l[n-1]

; n--;}

printf

("%lld\n"

,ans)

;}

上面的**複雜度是o(n^2)

然後本題可以用o(nlogn)的時間求解

#include

using

namespace std;

typedef

long

long l1;

//輸入

int n,l[maxn]

;void

solve()

//直到最大到木板為 1塊為止

while

(que.

size()

>1)

printf

("%lld\n"

,ans)

;}

時間不夠了 下次再早點開始寫

就醬紫 88!

實驗六 大雜燴

實驗六 1.實驗任務1 include include include define n 10 執行程式輸入測試時,可以把n改小一些輸入測試 typedef struct student stu void input stu,int 輸入學生資訊 void calc stu,int 計算總評和等級 ...

第六天 風氣

第六天 風氣 答 人有了,就得定規矩,否則就是一幫烏合之眾,而不是團隊。1必須朝九晚五。嚴格控制員工手裡有辦公室鑰匙。下班必須準時鎖門,員工準時離開。斷公司外網。要加班必須上級主管簽字,更不准在辦公室留宿,洗澡。這一條很重要,不要讓程式設計師活得像個浪子,精神恍惚,口中神叨,鬍子拉碴,這都是浮動工作...

開課第六天

今天是開課第六天,老師上午沒有講課,講了一上午的題,下午又講了新知識,如下 1 順序結構 從上到下順序進行。2 分支結構 if boolean表示式 else switch 值 case 值 break case 值 break switch 執行流程,switch的值和case的值一一比較,如果一...