第二十六天總結

2021-08-07 10:13:32 字數 1250 閱讀 6408

求多源、無負權邊的最短路:

floyd演算法:

floyd-warshall演算法是解決任意兩點間的最短路徑的一種演算法,可以正確處理有向圖或負權的最短路徑問題,同時也被用於計算有向圖的傳遞閉包。floyd-warshall演算法的時間複雜度為o(n3),空間複雜度為o(n2)。

最小生成樹:

給定乙個無向圖,如果它的某個子圖中任意兩個頂點都互相連通並且是一棵樹,那麼這課樹就叫做生成樹.如果邊上有權值,那麼是的邊權和最小的生成樹叫做最小生成樹

prim演算法:

它是從點的方面考慮構建一顆mst,大致思想是:設圖g頂點集合為u,首先任意選擇圖g中的一點作為起始點a,將該點加入集合v,再從集合u-v中找到另一點b使得點b到v中任意一點的權值最小,此時將b點也加入集合v以此類推。這個演算法本質上也是一種貪心。

kruskal演算法:

從邊的方面出發,在剩下的所有未選取的邊中,找最小邊,如果和已選取的邊構成迴路,則放棄,選取次小邊。本質也是貪心。

prim演算法適用於稠密圖,kruskal演算法適用於稀疏圖。但在平常中我一般選擇prim,因為編寫比較方便。

三•資料結構

單調佇列:

單調佇列,就是乙個符合單調性質的佇列,它同時具有單調的性質以及佇列的性質。它的作用很簡單,就是為了維護一組單調資料,讓我們在執行的過程中能夠快速尋求前k個或後k個中最大或最小的值。至於單調棧,相信看完上面的敘述後,都會有乙個大概的理解,單調棧就是乙個符合單調性質的棧它同時具有單調的性質以及棧的性質。這種資料結構一般用來優化dp,比如多重揹包,lis之類的dp題目。

樹狀陣列:

樹狀陣列的時間複雜度比較低,修改和查詢都是o(log(n)),看到這個複雜度就不禁想到了二分,沒錯樹狀陣列的效率來自於巧妙的二分,還有位運算的應用。樹狀陣列的應用非常廣泛,雖然不如線段樹廣,但是我覺得比線段樹好用。樹狀陣列可以和很多別的演算法結合,進行優化,比如dp,二分之類的。自身的題目有二維樹狀陣列,離線化處理,離散化,高精度,求逆序等。還有就是注意樹狀陣列是從從c[1]開始,c[0]這個元素不可以使用。

還有一些關於oj編譯器的問題都在我的部落格裡,在此不再贅述,有的地方限於篇幅沒有詳細展開說實現原理和優化方案。

緊張的集訓快告一段落了,我還有乙個重要的收穫就是團隊合作的重要性,acm是一項團體賽個人能力固然重要,好的合作能發揮我們更大的能力。雖然我沒有像其他同學一樣在社會上去實踐,但我在實驗室裡收穫並不會比別的同學要少。說實話acm是很枯燥的,只有你自己覺得好玩,有意思你才能學下去。這也讓我明白,很多事情你可以沒有天賦,但是如果你連興趣也沒有,一般都是一事無成的。

打卡第二十六天

在組合數合裡,貝爾數給出了集合劃分的數目,以數學家埃里克 坦普爾 貝爾 eric temple bell 命名,是組合數學中的一組整數數列。貝爾三角形類似於楊輝三角,只是其中各個項的計算規則不同。其規則如下 1.第一行第一項是1 2.對於n 1,第n行第一項等同第n 1行最後一項。3.對於m,n 1...

python第二十六天

import time from datetime import datetime defdownload name print time.sleep 3 print download 信條 download 加勒比海盜 download 摔跤吧爸爸 程序預設有乙個執行緒,這個執行緒叫主線程 其他的...

第二十六天Python學習記錄

追加檔案內容 mode a 會加在檔案內容後面 ab 以二進位制方式追加 以r開啟的檔案是不能執行read操作的 混合模式 r 先讀後寫 類似於追加 w 寫讀模式 先寫後讀 寫之前會把之前的內容清空 檔案的其他操作 fileno flush readable readline seek tell s...