競程日記 - 資料結構篇

大家好我是卡編這樣。2016 年 9 月我們決定以資料結構的各種介紹與實作作為這個新學期、新賽季的開始。大家一起加油吧!

這裡的文章會是以主題式地蒐集各種競賽中常見的資料結構問題喔~ 在這些文章中,我們期望做到「沒有太多驚訝」、「沒有太多疑問」以及「沒有太多模糊的解釋」三大原則,讓大家可以瞭解每一個資料結構的特性,以及一些實戰應用的例子。

之後應該會把這些內容寫進書裡吧~如果有出書的那一天的話(笑)

老話一百句,歡迎大家投稿、推薦題目、指出錯誤與建議修正項目喔!希望能夠集結大家的熱情,讓競賽程式解題的社群能有更多的討論題材~(如果您希望擁有編輯權限的話,還請直接敲卡編這樣~)

:smile: 特別感謝

特別感謝日月卦長的協助!

:book: 請參考日月卦長的模板庫

0 關於資料結構

0.1 什麼是資料結構?

顧名思義,資料結構就是一種資料儲存的方式,目的在於能夠讓資料被有效率地運用。通常我們想要使用或設計一個資料結構時,首要任務必須先理解資料會如何被使用,才能有效地設計與實作出高效能的資料結構。

0.2 資料結構與演算法有什麼不同?

演算法無所不在,資料結構的操作裡頭也滿滿的都是演算法。資料結構和演算法這兩種東西是相輔相成的。比起演算法來說,資料結構更像是對資料存儲與更新嚴謹定義出來的 API,它提供了一些接口給上層的演算法使用、還可以有效率地實作出定義好的操作需求。

0.3 競賽上常說的資料結構問題是什麼?

  1. 有很明顯地演算法、但是需要設計有效率的資料結構。
  2. 利用資料結構的輔助,可以輕鬆完成的題目。

0.4 我們會討論哪些東西?

可以廣泛應用、在比賽中能夠有所運用與表現的資料結構。

0.5 這次我們傾向於不會討論哪些東西?

這些專門的東西應該要留給獨自的章節,細細品味才是。

  • 動態規劃的資料結構優化(偶爾會提到啦,不過主軸如果是動態規劃傾向不提)
  • 專門用在圖論上的資料結構(偶爾會提到啦,不過會把圖論的部份當做應用,例如最短路徑、網路流、帶權匹配等)
  • 字串處理相關的資料結構(比方說後綴樹、後綴數組、後綴自動機等)
  • 與機器規格相關的資料結構(比方說無視快取資料結構 Cache Oblivious Data Structures 等)
  • 計算幾何等相關資料結構

results matching ""

    No results matching ""