●序Ⅰ
序Ⅱ
前言
符號表
主要信息學競賽及相關活動列表
入門級
1.1 基礎知識與編程環境3
1.1.1 計算機的基本構成3
1.1.2 Windows、Linux等操作繫統的基本概念及其常見操作3
1.1.3 計算機網絡和Internet的基本概念4
1.1.4 計算機的歷史和常見用途4
1.1.5 NOI以及相關活動的歷史6
1.1.6 NOI以及相關活動的規則7
1.1.7 位、字節與字8
1.1.8 程序設計語言以及程序編譯和運行的基本概念8
1.1.9 使用圖形界面新建、復制、刪除、移動文件或目錄9
1.1.10 使用Windows繫統下的集成開發環境10
1.1.11 使用Linux繫統下的集成開發環境10
1.1.12 g++、gcc等常見編譯器的基本使用10
1.2 C++程序設計11
1.2.1 程序基本概念11
1.2.2 基本數據類型14
1.2.3 程序基本語句16
1.2.4 基本運算21
1.2.5 數學庫常用函數24
1.2.6 結構化程序設計25
1.2.7 數組27
1.2.8 字符串的處理29
1.2.9 函數與遞歸30
1.2.10 結構體與聯合體34
1.2.11 指針類型35
1.2.12 文件及基本讀寫38
1.2.13 STL模板40
1.3 數據結構44
1.3.1 線性結構44
1.3.2 簡單樹48
1.3.3 特殊樹52
1.3.4 簡單圖59
1.4 算 法65
1.4.1 算法概念與描述65
1.4.2 入門算法66
1.4.3 基礎算法69
1.4.4 數值處理算法74
1.4.5 排序算法82
1.4.6 搜索算法88
1.4.7 圖論算法90
1.4.8 動態規劃93
1.5 數學與其他100
1.5.1 數及其運算100
1.5.2 初等數論102
1.5.3 離散與組合數學108
1.5.4 其他113
提高級
2.1 基礎知識與編程環境117
2.1.1 Linux繫統終端中常用的文件與目錄操作命令117
2.1.2 Linux繫統下常見文本編輯工具的使用118
2.1.3 g++、gcc等編譯器與相關編譯選項119
2.1.4 在Linux繫統終端中運行程序,使用time命令查看程序用時120
2.1.5 調試工具GDB的使用120
2.2 C++程序設計121
2.2.1 類121
2.2.2 STL模板125
2.3 數據結構135
2.3.1 線性結構135
2.3.2 集合與森林144
2.3.3 特殊樹146
2.3.4 常見圖161
2.3.5 哈希表166
2.4 算 法169
2.4.1 復雜度分析169
2.4.2 算法策略(離散化)173
2.4.3 基礎算法(分治算法)173
2.4.4 排序算法174
2.4.5 字符串相關算法(字符串匹配:KMP算法)182
2.4.6 搜索算法184
2.4.7 圖論算法188
2.4.8 動態規劃218
2.5 數學與其他224
2.5.1 初等數學224
2.5.2 初等數論224
2.5.3 離散與組合數學229
2.5.4 線性代數234
NOI級
3.1 C++程序設計(面向對像的程序設計思想)243
3.2 數據結構244
3.2.1 線性結構(塊狀鏈表)244
3.2.2 序列(跳躍表)245
3.2.3 復雜樹246
3.2.4 可合並堆267
3.2.5 可持久化數據結構270
3.3 算 法275
3.3.1 算法策略275
3.3.2 字符串算法282
3.3.3 圖論算法295
3.3.4 動態規劃322
3.4 數學與其他330
3.4.1 初等數論330
3.4.2 離散與組合數學335
3.4.3 線性代數342
3.4.4 高等數學344
3.4.5 概率論349
3.4.6 博弈論352
3.4.7 很優化(單純形法)353
3.4.8 計算幾何357
3.4.9 信息論(熵、互信息、條件熵、相對熵)362
3.4.10 其他363