讓你了解設計資料結構與演算法的理念,並能正確的理解何謂「效率」以及增加效率的方式。
對何謂「資訊競賽」還很陌生嗎?你一定要來了解看看!
那些關於練習和準備比賽的策略。
那些對寫程式非常有幫助的工具。
好用的語法糖,讓你的迴圈寫得更簡潔。
好用的語法糖,讓你不用再打出 first 和 second。
first
second
你知道 0.1 + 0.2 不等於 0.3 嗎?
struct 的建構子。
我們會教你如何把程式寫得好、寫得穩。
一種易於理解的指標實作方式。
一切演算法的基礎,不可或缺的知識們。
程式設計中最重要的概念之一。
介紹前綴和與差分的用處以及他們的關聯。
圖像化的枚舉方法。
利用題目單調性來加速演算法的一種枚舉方法。
在「答案上」執行二分搜尋法。
一切資料結構的基礎,不可或缺的知識們。
何謂「二元樹」?何謂「二元搜尋樹」?
介紹 Heap 和他相對應的內建函式。
介紹 C++ 內建的 set 與 map 的使用方法。
set
map
對雜湊的基礎認識,以及 C++ 內建的 unordered_set 與 unordered_map 的使用方法。
unordered_set
unordered_map
C++ 內建容器的御用「指標」。
了解貪心演算法的思路以及認識各種經典問題。
學會做出正確的貪心選擇、以及檢驗其正確性。
了解基本的貪心演算法優化與包裝。
認識那些在競賽程式中會遇到的基本數學問題。
模運算、同餘的概念、快速冪與質數篩法。
費馬小定理、歐拉函數、歐拉定理、模逆元與擴展歐幾里得演算法
在各種演算法中被廣泛使用的技巧。
用遞迴的方式找出所有可能性,包含暴力枚舉、剪枝、在迷宮中找到路徑、遍歷一棵樹。
類似於「水會不斷往外擴散」的搜尋方式,具有使用最少步數達成目標的特殊效果。
演算法設計的經典手法,將問題分成多個部分、分別處理後再嘗試湊出完整問題的答案。
一種特殊的演算法設計手法。
一步步帶你認識動態規劃概念、並了解基本的動態規劃設計與優化方法。
用現實的例子引導出動態規劃的概念,故意先不給定義
從線性遞迴問題開始認識動態規劃。
動態規劃的兩種實作方式。
動態規劃的常用術語和基本的解題思路。
使用多個參數來表達動態規劃演算法的狀態。
利用動態規劃中的一道經典問題來認識不同的動態規劃解題方法。
動態規劃中的一種既簡潔又能省記憶體的實作方式。
複習一遍目前所學,了解設計動態規劃演算法利用到的題目特性為何。
認識演算法競賽中那些被廣泛用來解題的資料結構。
認識單調隊列的技巧以及這個技巧能解決的題目類型。
一種用來維護「集合合併資訊」的資料結構。
認識圖論的基本術語以及那些經典問題。
認識何謂「圖論」,以及了解相關名詞。
能夠將頂點二著色、且沒有兩個同色點相鄰的圖。
沒有任何環的連通圖。
樹直徑、樹圓心、樹重心和樹上匹配。
透過把 DFS 過程存下來的樹上操作技巧。
講述最短路徑演算法的基本概念,以及兩個基本的最短路徑演算法
講述一個非常簡短、用來計算全點對最短路徑的演算法
整理過一遍目前所學的最短路徑演算法、差別以及使用情況
講述最小生成樹的基本概念,以及兩個基本的 MST 演算法。