星星之火OIer:寒假學習總結

emmm。。。

經過12天的培訓,感覺整個人都已懵逼。。。

前言

這次寒假的培訓,講了許多的知識,雖然不能一次性全部消化完,後續還要繼續補充學習,但我還是收穫了許多。

前六天主要講了最短路,生成樹,LCA和樹形DP,而後六天講的就是數論。

可能因爲最短路這些前面有些提及,大部分還是聽得懂,但到數論就真的只能說是一臉懵逼了(相信有很多人跟我是同樣的感覺)

知識點

最短路:

多源點:

  • floyd,特點:三重循環時間複雜度相比較高,但是是現階段唯一一個可以做多源點的算法

單元點:

  • dijkstra,特點:首先不能有負邊權,雖然可以修改算法得到正解,但遇到特殊數據會被卡到指數,然後用貪心的思想,由離s前k-1近的點就可以得到s第k近的點。
  • bellman-ford,特點:可以處理負邊權,設 dis [ i ] [ j ] 表示從源點 s 最多經過 i 條邊到達終點 j 的最短路長度,則 ​dis [ i ] [ j ] = min ( dis [ i ] [ j ] , min ( dis [ i - 1 ] [ v ] + w ( v , j ) ) )  當然,dis要預先處理爲極大值。
  • spaf,特點:可以處理負邊權,從源點出發,依次鬆弛每一個點。

生成樹:

  • prim,特點:找每一個樹之外的離樹最短的點,複雜度O(V^2),適合稠密圖(V代表點的個數)。
  • kurskal,特點:對邊權排序,依次添加,形成環就跳過,複雜度O(ElogE),適合稀疏圖(E代表邊的個數)。

LCA:

  • 這個是比較齊的LCA
  • 暴力,特點:先處理到相同深度,然後一層一層往上爬,直到相遇,複雜度最高,O(n),好寫,避免卡數據。
  • dfs序+rmq(沒太懂,搞清楚再說哈)。
  • 倍增,特點:還是先處理到相同的深度,但每次爬2^i次方的高度,複雜度O(logn)。
  • tarjan,特點:離線算法,先記錄所有的要查詢的點,一次dfs求出所有點的LCA。

樹形DP:

  • 就像DP一樣,只是在樹上做DP。

數論:

  • 輾轉相除法,在O(nlogn)的時間內求出兩個數的最大公約數。
  • 埃拉託斯特尼篩法,O(nloglogn)求出1~n裏的質數。
  • 歐拉篩法,O(n)求出1~n裏的質數。

數論內容太多,這裏不一一列舉了。。。

分析

再來總結一下最近的學習吧。

感覺還是有點跟不上大家的腳步,理解得比較慢,再加上這一次講解的知識很多,沒有來得及消化,所以可能做題情況不是很好。

但是,還是要加油趕啊。

最近兩次考試也不是很理想,總共只有20分,雖然第二次不應該爆零,但是從中也能看出自己的不足。

總結

其實吧,自我感覺還是有點力不從心了,感覺自己快要退役了。

但是,我還是要努力留在編程社。

至少,也要再走一年。

在這一年裏,也要竭盡全力了。

至少要讓自己在編程社的時光不留遺憾!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章