ACM模組解析之 資料結構

2021-08-18 15:07:26 字數 971 閱讀 8051

資料結構

一.簡介

資料結構在比賽中通常用於對一些題目邏輯簡單,但是測試資料比較大,用樸素(模擬或暴力)演算法,會導致超時或超出記憶體限制的題目。重點演算法需要熟悉掌握和靈活應用。

二.演算法分類

1.線性表

棧單調棧★

佇列雙端佇列

優先佇列★

鍊錶塊狀鍊錶

2.集合

2.1雜湊表★

2.2並查集 /帶權並查集★

2.3二分查詢★

3.排序 //雖然acm比賽中排序大部分都是直接用sort,但是花一些時間去明白下面排序演算法,有利於提高以後對其他演算法的抽象理解能力,還是很有必要的

3.1樸素排序演算法

插入排序

氣泡排序

3.2高效排序演算法

歸併排序演算法★

快速排序演算法

線性排序演算法

4.樹的基本概念★

4.1二叉樹

二叉樹的先序,後序,中序遍歷和層次遍歷。★

二叉樹的鏈式表示法和陣列表示法

二叉排序樹(二叉搜尋樹)★

treap名次樹

平衡二叉樹 size balance tree

伸展樹實現可**與合併的序列

4.2  rmq問題 st表 ★

線段樹動態範圍最小值問題 ★

主席樹查詢區間內有多少不同的數 ★

劃分樹笛卡爾樹

4.3堆 (完全二叉樹)

二叉堆左偏樹★

5.其他

樹狀陣列★

逆序數★

滾動陣列

樹鏈剖分

三.模板整理

同數學模組一樣,本模組演算法也比較多,而且有些短時間可能難以明白。請務必先學懂學通帶★號的部分,其他的難度過高,出現在省賽的機率很低,僅做了解,知道其作用和整理下模板題目即可。

ACM模組解析之 STL

stl標準模板庫 一.簡介 stl和資料結構在icpc競賽的作用類似,大部分情況都是題目很難用樸素演算法在規定的時間和記憶體條件中完成,才不得不用的一種優化方式。在acm競賽中,需要用到陣列 字串 佇列 堆疊 鍊錶 平衡二叉檢索樹等資料結構和排序 搜尋演算法,以提高程式的時間 空間執行效率。這些資料...

ACM模組解析之 動態規劃

動態規劃 一.簡介 在acm中,動態規劃是一種將乙個複雜問題分為多個簡單的小問題的思想。在使用動態規劃時,原問題須滿足重疊子問題和最優子結構這個性質。運用動態規劃思想設計的演算法一般比樸素的演算法高效很多。因為在計算某個狀態的時候,已經被計算的子問題將不需要重複計算,而是呼叫之前儲存下的結果。這樣就...

Redis解析之集群資料結構

redis是乙個高可用 高效能 高可擴充套件性的基於記憶體也支援持久化儲存的 key value 儲存資料庫。集群相關的資料結構 cluster.h 儲存當前節點與其他節點進行通訊所需的全部資訊 typedef struct clusterlink clusterlink cluster.h 集群節...