PTA 修理牧場(兩種方法,注釋詳解)

2021-10-07 20:34:03 字數 1036 閱讀 2194

農夫要修理牧場的一段柵欄,他測量了柵欄,發現需要n塊木頭,每塊木頭長度為整數l​i個長度單位,於是他購買了一條很長的、能鋸成n塊的木頭,即該木頭的長度是l​i的總和。

但是農夫自己沒有鋸子,請人鋸木的酬金跟這段木頭的長度成正比。為簡單起見,不妨就設酬金等於所鋸木頭的長度。例如,要將長度為20的木頭鋸成長度為8、7和5的三段,第一次鋸木頭花費20,將木頭鋸成12和8;第二次鋸木頭花費12,將長度為12的木頭鋸成7和5,總花費為32。如果第一次將木頭鋸成15和5,則第二次鋸木頭花費15,總花費為35(大於32)。

請編寫程式幫助農夫計算將木頭鋸成n塊的最少花費。

輸入首先給出正整數n(≤10^​4),表示要將木頭鋸成n塊。第二行給出n個正整數(≤50),表示每段木塊的長度。

輸出乙個整數,即將木頭鋸成n塊的最少花費。

8 4 5 1 2 1 3 1 1

程式**:

法一(定義優先優先佇列):

#include

#include

using

namespace std;

intmain()

// 佇列不為空

while

(q.size()

>1)

cout<}

#include

#include

// 自定義乙個將陣列從小到大排序的方法

void

sort

(int

*a,int m)}}

}int

main()

}// 比到最後乙個數還沒找到,就把sum加到最後

if(index==n)

a[n-1]

=sum;

}printf

("%d\n"

,costsum)

;return0;

}

sqlalchemy的兩種方法詳解

工作需要,用到了sqlalchemy,經過近乙個月的不斷學習和探索實踐,現在整理一下,以免將來沒地方找。下面的講解我們統一把資料庫的相關操作封裝在乙個類裡面。先來說第一種 from sqlalchemy import create engine from sqlalchemy.ext.declara...

詳解Swift model 解析的兩種方法

詳解swift model 解析的兩種方法 1.常規www.cppcns.com解析方法 懶載入宣告乙個ljnewsmodel為資料的陣列 lazy var ljarray ljnewsmodel ljnewsmodel mark 資料獲取和解析 extension newsviewcontroll...

LCA兩種方法

lca least common ancestors 即最近公共祖先,是指在有根樹中,找出某兩個結點u和v最近的公共祖先。模板題 anc i j 表示第i個點的2 j的祖先的標號 整個過程就是兩個點往上跳到同一深度,再一起往上跳找到lca include include using namespac...