章節目錄
主題目錄
NCOJ
程式解題社
章節目錄
主題目錄
NCOJ
程式解題社
Chapter III.
漸入佳境
讓你了解設計資料結構與演算法的理念,並能正確的理解何謂「效率」以及增加效率的方式。
資訊競賽介紹
對何謂「資訊競賽」還很陌生嗎?你一定要來了解看看!
比賽 + 練習策略
常用
那些關於練習和準備比賽的策略。
實作知識
那些對寫程式非常有幫助的工具。
Range-based for loop
常用
好用的語法糖,讓你的迴圈寫得更簡潔。
Structured binding
常用
好用的語法糖,讓你不用再打出 `first` 和 `second`。
浮點數誤差
敬請期待
常用
你知道 0.1 + 0.2 不等於 0.3 嗎?
實作技巧
我們會教你如何把程式寫得好、寫得穩。
偽指標
常用
一種易於理解的指標實作方式。
基礎演算法
一切演算法的基礎,不可或缺的知識們。
遞迴
必學
程式設計中最重要的概念之一。
前綴和與差分
必學
介紹前綴和與差分的用處以及他們的關聯。
一維掃描線
必學
圖像化的枚舉方法。
雙指標
必學
利用題目單調性來加速演算法的一種枚舉方法。
對答案二分搜
必學
在「答案上」執行二分搜尋法。
基礎資料結構
一切資料結構的基礎,不可或缺的知識們。
二元樹
重要
何謂「二元樹」?何謂「二元搜尋樹」?
Heap
必學
介紹 Heap 和他相對應的內建函式。
Set 與 Map
必學
介紹 C++ 內建的 `set` 與 `map` 的使用方法。
Unordered Set 與 Unordered Map
罕見
對雜湊的基礎認識,以及 C++ 內建的 `unordered_set` 與 `unordered_map` 的使用方法。
Iterator
常用
C++ 內建容器的御用「指標」。
貪心演算法
了解貪心演算法的思路以及認識各種經典問題。
貪心法 II
必學
學會做出正確的貪心選擇、以及檢驗其正確性。
貪心法 III
必學
了解基本的貪心演算法優化與包裝。
基礎數學
認識那些在競賽程式中會遇到的基本數學問題。
常用數學演算法
必學
模運算、同餘的概念、快速冪與質數篩法。
基礎數論
必學
費馬小定理、歐拉函數、歐拉定理、模逆元與擴展歐幾里得演算法
基礎組合
敬請期待
什麼是矩陣
敬請期待
演算法技巧
在各種演算法中被廣泛使用的技巧。
深度優先搜尋
必學
用遞迴的方式找出所有可能性,包含暴力枚舉、剪枝、在迷宮中找到路徑、遍歷一棵樹。
廣度優先搜尋
必學
類似於「水會不斷往外擴散」的搜尋方式,具有使用最少步數達成目標的特殊效果。
離散化
敬請期待
分治法
必學
演算法設計的經典手法,將問題分成多個部分、分別處理後再嘗試湊出完整問題的答案。
倍增法
重要
一種特殊的演算法設計手法。
基礎動態規劃
一步步帶你認識動態規劃概念、並了解基本的動態規劃設計與優化方法。
基本概念
用現實的例子引導出動態規劃的概念,故意先不給定義
第一道動態規劃問題
必學
從線性遞迴問題開始認識動態規劃。
Top down 與 Bottom up
必學
動態規劃的兩種實作方式。
狀態與轉移
必學
動態規劃的常用術語和基本的解題思路。
多個維度的 DP
必學
使用多個參數來表達動態規劃演算法的狀態。
背包問題
必學
利用動態規劃中的一道經典問題來認識不同的動態規劃解題方法。
滾動 DP
必學
動態規劃中的一種既簡潔又能省記憶體的實作方式。
動態規劃的必要元素
常用
複習一遍目前所學,了解設計動態規劃演算法利用到的題目特性為何。
資料結構
認識演算法競賽中那些被廣泛用來解題的資料結構。
單調隊列
必學
認識單調隊列的技巧以及這個技巧能解決的題目類型。
併查集
敬請期待
必學
一種用來維護「集合合併資訊」的資料結構。
基礎圖論
認識圖論的基本術語以及那些經典問題。
圖論基礎
敬請期待
必學
二分圖
敬請期待
必學
樹
敬請期待
必學
樹壓平
敬請期待
必學
拓撲排序
敬請期待
必學
最短路徑
敬請期待
必學
最小生成樹
敬請期待
必學
最低共同祖先
敬請期待
必學