左神演算法學習日記 堆(一)

2021-09-19 03:46:29 字數 694 閱讀 1799

一直覺得赫夫曼樹沒什麼diao用,沒想到這道題可以用赫夫曼樹,而且用小根堆可以實現赫夫曼樹,學到好多。

題目二一塊金條切成兩半, 是需要花費和長度數值一樣的銅板的。 比如長度為20的金條, 不管切成長度多大的兩半, 都要花費20個銅板。 一群人想整分整塊金條, 怎麼分最省銅板?

例如,給定陣列, 代表一共三個人, 整塊金條長度為10+20+30=60.

金條要分成10,20,30三個部分。

如果,先把長度60的金條分成10和50, 花費60

再把長度50的金條分成20和30, 花費50

一共花費110銅板。

但是如果,

先把長度60的金條分成30和30, 花費60

再把長度30金條分成10和20, 花費30

一共花費90銅板。

#include#include#include#includeusing namespace std;

int main()

; int res = 0;

int temp;

priority_queue, greater> small;//用小根堆來找出最小的兩個數

for (int i = 0; i < shu.size(); i++)

while (small.size() > 1)

cout << res;

}

左神演算法學習日記 堆(二)

include include include include include include include includeusing namespace std class project project const project p push進堆時用到了拷貝建構函式,雖然不寫也無所謂 pro...

左神演算法學習日記 單鏈表(一)

最近在找實習工作,做個左神演算法的學習日記,方便以後鄙視自己。題一 判斷乙個鍊錶是否為回文結構 題目 給定乙個鍊錶的頭節點head,請判斷該鍊錶是否為回文結構。例如 1 2 1,返回true。1 2 2 1,返回true。15 6 15,返回true。1 2 3,返回false。高階 如果鍊錶長度為...

左神演算法學習日記 樹dp

樹dp問題只需要考慮每個結點的所有孩子的情況就可以解決 class node node class treeinf void creat node node if r 獲得子樹中結點最多的搜尋二叉樹的結點個數 treeinf getmaxnode node node treeinf leftinf ...