演算法競賽入門經典, 2/e (演算法藝術與信息學競賽) 算法艺术与信息学竞赛:算法竞赛入门经典(第2版)

劉汝佳

  • 出版商: 清華大學
  • 出版日期: 2014-06-01
  • 售價: $479
  • 貴賓價: 9.5$455
  • 語言: 簡體中文
  • 頁數: 464
  • 裝訂: 平裝
  • ISBN: 7302356289
  • ISBN-13: 9787302356288
  • 相關分類: Algorithms-data-structures
  • 立即出貨

買這商品的人也買了...

商品描述

<內容簡介>

《演算法競賽入門經典(第2版演算法藝術與信息學競賽)》由劉汝佳編著,是一本演算法競賽的入門與提高教材,把C/C++語言、演算法和解題有機地結合在一起,淡化理論,註重學習方法和實踐技巧。全書內容分為12章,包括程序設計入門、循環結構程序設計、數組和字符串、函數和遞歸、C++與STL入門、數據結構基礎、暴力求解法、高效演算法設計、動態規劃初步、數學概念與方法、圖論模型與演算法、高級專題等內容,覆蓋了演算法競賽入門和提高所需的主要知識點,並含有大量例題和習題。書中的代碼規範、簡潔、易懂,不僅能幫助讀者理解演算法原理,還能教會讀者很多實用的編程技巧;書中包含的各種開發、測試和調試技巧也是傳統的語言、演算法類書籍中難以見到的。
    本書可作為全國青少年信息學奧林匹克聯賽(NOIP)複賽教材、全國青少年信息學奧林匹克競賽(NOI)和ACM國際大學生程序設計競賽(ACM/ICPC)的訓練資料,也可作為IT工程師與科研人員的參考用書。

<目錄>

第1部分  語言篇
  第1章  程序設計入門
    1.1  算術表達式
    1.2  變量及其輸入
    1.3  順序結構程序設計
    1.4  分支結構程序設計
    1.5  註解與習題
    1.5.1  C語言、C99、C11及其他
    1.5.2  數據類型與輸入格式
    1.5.3  習題
    1.5.4  小結
  第2章  循環結構程序設計
    2.1  for循環
    2.2  while循環和do-while循環
    2.3  循環的代價
    2.4  演算法競賽中的輸入輸出框架
    2.5  註解與習題
    2.5.1  習題
    2.5.2  小結
  第3章  數組和字符串
    3.1  數組
    3.2  字符數組
    3.3  競賽題目選講
    3.4  註解與習題
    3.4.1  進制制與整數表示
    3.4.2  思考題
    3.4.3  黑盒測試和在線評測系統
    3.4.4  例題一覽與習題
    3.4.5  小結
  第4章  函數和遞歸
    4.1  自定義函數和結構體
    4.2  函數調用與參數傳遞
    4.2.1  形參與實參
    4.2.2  調用棧
    4.2.3  用指針作參數
    4.2.4  初學者易犯的錯誤
    4.2.5  數組作為參數和返回值
    4.2.6  把函數作為函數的參數
    4.3  遞歸
    4.3.1  遞歸定義
    4.3.2  遞歸函數
    4.3.3  C語言對遞歸的支持
    4.3.4  段錯誤與棧溢出
    4.4  競賽題目選講
    4.5  註解與習題
    4.5.1  頭文件、副作用及其他
    4.5.2  例題一覽和習題
    4.5.3  小結
  第5章    C++與STL入門
    5.1  從C到C++
    5.1.1  C++版框架
    5.1.2  引用
    5.1.3  字符串
    5.1.4  再談結構體
    5.1.5  模板
    5.2  STL初步
    5.2.1  排序與檢索
    5.2.2  不定長數組:vector
    5.2.3  集合:set
    5.2.4  映射:map
    5.2.5  棧、隊列與優先隊列
    5.2.6  測試STL
    5.3  應用:大整數類
    5.3.1  大整數類BigInteger
    5.3.2  四則運算
    5.3.3  比較運算符
    5.4  競賽題目舉例
    5.5  習題
第2部分  基礎篇
  第6章  數據結構基礎
    6.1  再談棧和隊列
    6.2  鏈表
    6.3  樹和二叉樹
    6.3.1  二叉樹的編號
    6.3.2  二叉樹的層次遍歷
    6.3.3  二叉樹的遞歸遍歷
    6.3.4  非二叉樹
    6.4  圖
    6.4.1  用DFS求連通塊
    6.4.2  用BFS求最短路
    6.4.3  拓撲排序
    6.4.4  歐拉迴路
    6.5  競賽題目選講
    6.6  訓練參考
  第7章  暴力求解法
    7.1  簡單枚舉
    7.2  枚舉排列
    7.2.1  生成1~n的排列
    7.2.2  生成可重集的排列
    7.2.3  解答樹
    7.2.4  下一個排列
    7.3  子集生成
    7.3.1  增量構造法
    7.3.2  位向量法
    7.3.3  二進製法
    7.4  回溯法
    7.4.1  八皇後問題
    7.4.2  其他應用舉例
    7.5  路徑尋找問題
    7.6  迭代加深搜索
    7.7  競賽題目選講
    7.8  訓練參考
第3部分  競賽篇
  第8章  高效演算法設計
    8.1  演算法分析初步
    8.1.1  漸進時間複雜度
    8.1.2  上界分析
    8.1.3  分治法
    8.1.4  正確對待演算法分析結果
    8.2  再談排序與檢索
    8.2.1  歸併排序
    8.2.2  快速排序
    8.2.3  二分查找
    8.3  遞歸與分治
    8.4  貪心法
    8.4.1  背包相關問題
    8.4.2  區間相關問題
    8.4.3  Huffman編碼
    8.5  演算法設計與優化策略
    8.6  競賽題目選講
    8.7  訓練參考
  第9章  動態規劃初步
    9.1  數字三角形
    9.1.1  問題描述與狀態定義
    9.1.2  記憶化搜索與遞推
    9.2  DAG上的動態規劃
    9.2.1  DAG模型
    9.2.2  最長路及其字典序
    9.2.3  固定終點的最長路和最短路
    9.2.4  小結與應用舉例
    9.3  多階段決策問題
    9.3.1  多段圖的最短路
    9.3.2  0-1背包問題
    9.4  更多經典模型
    9.4.1  線性結構上的動態規劃
    9.4.2  樹上的動態規劃
    9.4.3  複雜狀態的動態規劃
    9.5  競賽題目選講
    9.6  訓練參考
  第10章  數學概念與方法
    10.1  數論初步
    10.1.1  歐幾里德演算法和唯一分解定理
    10.1.2  Eratosthenes篩法
    10.1.3  擴展歐幾里德演算法
    10.1.4  同餘與模算術
    10.1.5  應用舉例
    10.2  計數與概率基礎
    10.2.1  楊輝三角與二項式定理
    10.2.2  數論中的計數問題
    10.2.3  編碼與解碼
    10.2.4  離散概率初步
    10.3  其他數學專題
    10.3.1  遞推
    10.3.2  數學期望
    10.3.3  連續概率
    10.4  競賽題目選講
    10.5  訓練參考
  第11章  圖論模型與演算法
    11.1  再談樹
    11.1.1  無根樹轉有根樹
    11.1.2  表達式樹
    11.2  最小生成樹
    11.2.1  Kruskal演算法
    11.2.2  競賽題目選解
    11.3  最短路問題
    11.3.1  Dijkstra演算法
    11.3.2  Bellman-Ford演算法
    11.3.3  Floyd演算法
    11.3.4  競賽題目選講
    11.4  網絡流初步
    11.4.1  最大流問題
    11.4.2  增廣路演算法
    11.4.3  最小割最大流定理
    11.4.4  最小費用最大流問題
    11.4.5  應用舉例
    11.5  競賽題目選講
    11.6  訓練參考
    11.7  總結與展望
  第12章  高級專題
    12.1  知識點選講
    12.1.1  自動機
    12.1.2  樹的經典問題和方法
    12.1.3  可持久化數據結構
    12.1.4  多邊形的布爾運算
    12.2  難題選解
    12.2.1  數據結構
    12.2.2  網絡流
    12.2.3  數學
    12.2.4  幾何
    12.2.5  非完美演算法
    12.2.6  雜題選講
    12.3  小結與習題
附錄A  開發環境與方法
    A.1  命令行
    A.1.1  文件系統
    A.1.2  進程
    A.1.3  程序的執行
    A.1.4  重定向和管道
    A.1.5  常見命令
    A.2  操作系統腳本編程入門
    A.2.1  Windows下的批處理
    A.2.2  Linux下的Bash腳本
    A.2.3  再談隨機數
    A.3  編譯器和調試器
    A.3.1  gcc的安裝和測試
    A.3.2  常見編譯選項
    A.3.3  gdb簡介
    A.3.4  gdb的高級功能
    A.4  淺談IDE
主要參考書目