---
description: 一些知識點
---

# 競程學習地圖

## Data Structure

* C++ STL
* Binary Search Tree
* Heap
* Tree
* Graph
* Binary Indexed Tree (Fenwick Tree)
* Sparse Table
* Segment Tree
* Treap
* Link-Cut Tree

## Greedy

## Search

* Sort
* Binary Search, Trinary Search
* BFS, DFS, 雙向 BFS, A\*
* Heuristic Search
* Two Pointer

## Divide & Conquer

* 快速冪
* Fast Fourier Transform (FFT)

## 根號算法

* 莫隊
* Counting Triangles

## Graph

* Bipartite Graph
* Tree Diameter
* Shortest Path
* Minimum Spanning Tree
* Union-Find Tree (Disjoint Set)
* Topological Sort
* 2-SAT
* Connected Component, Bridge, Articulation Vertex
* Traveling Salesman Problem
* Euler Path
* 中國郵差問題
* 樹鏈剖分
* Clique
* Maximum Independent Set
* Minimum Vertex Cover

## Dynamic Programming (DP)

[AtCoder - Educational DP Contest](https://atcoder.jp/contests/dp/tasks)

* Knapsack Problem
* Longest Increasing Subsequence
* Longest Common Subsequence
* Edit Distance
* 單調隊列
* 斜率優化
* 四邊形優化
* 位元 DP

## Geometry

* 掃描線
* Convex Hull

## Flow & Matching

* Max Flow
* Min-Cost Max Flow
* Bipartite Matching
* KM
* Dinic's Algorithm

## Math

* Josephus Problem
* Nim
* 質數
  * Miller Rabin
  * Mod Inverse
  * Euler Function
  * Discrete Sqrt
* 矩陣
* 解聯立方程
* 勘根定理
* 半平面交

## String

* Trie
* KMP
* Z-Algorithm
* Manachar
* AC 自動機
