挑戰(zhàn)程序設(shè)計(jì)競(jìng)賽(第2版)
定 價(jià):79 元
叢書名:圖靈程序設(shè)計(jì)叢書
- 作者:秋葉拓哉 ,巖田陽(yáng)一 ,北川宜稔 著 巫澤俊 ,莊俊元 ,李津羽 譯
- 出版時(shí)間:2013/7/1
- ISBN:9787115320100
- 出 版 社:人民郵電出版社
- 中圖法分類:TP311.1
- 頁(yè)碼:424
- 紙張:膠版紙
- 版次:2
- 開本:16開
《挑戰(zhàn)程序設(shè)計(jì)競(jìng)賽(第2版)》對(duì)程序設(shè)計(jì)競(jìng)賽中的基礎(chǔ)算法和經(jīng)典問題進(jìn)行了匯總,分為準(zhǔn)備篇、初級(jí)篇、中級(jí)篇與高級(jí)篇4章。作者結(jié)合自己豐富的參賽經(jīng)驗(yàn),對(duì)嚴(yán)格篩選的110 多道各類試題進(jìn)行了由淺入深、由易及難的細(xì)致講解,并介紹了許多實(shí)用技巧。每章后附有習(xí)題,供讀者練習(xí),鞏固所學(xué)。
世界頂級(jí)程序設(shè)計(jì)高手的經(jīng)驗(yàn)總結(jié) 【ACM-ICPC全球總冠軍】巫澤俊主譯 日本ACM-ICPC參賽者人手一冊(cè)
如今,形形色色的程序設(shè)計(jì)競(jìng)賽層出不窮,聽說過Google Code Jam、TopCoder、ACM-ICPC的讀者恐怕不在少數(shù)。本書要介紹的正是這類以在規(guī)定時(shí)間內(nèi)、又快又準(zhǔn)地解決盡可能多的題目為目標(biāo)的程序設(shè)計(jì)競(jìng)賽。
程序設(shè)計(jì)競(jìng)賽內(nèi)涵豐富,即便是經(jīng)驗(yàn)老道的程序員,要想在比賽中取得好成績(jī)也絕非易事。要在程序設(shè)計(jì)競(jìng)賽中取勝,不僅需要運(yùn)用靈活的想象和豐富的知識(shí)得出正確的算法,還需要一氣呵成地實(shí)現(xiàn)并調(diào)試通過。
另一方面,程序設(shè)計(jì)競(jìng)賽對(duì)新手而言亦非遙不可及。為了讓更多的參賽選手體會(huì)到比賽的樂趣,大多數(shù)比賽都會(huì)準(zhǔn)備若干面向初學(xué)者的題目。另外,即便未能在比賽中取得好成績(jī),通過比賽,也能夠使自己的能力得到有效的鍛煉。最重要的是,大家能夠享受到激烈的比賽帶來的樂趣。
本書的作者們參加過眾多程序設(shè)計(jì)競(jìng)賽,在平時(shí)的練習(xí)和學(xué)習(xí)中,也獲得了各種各樣的知識(shí)與技巧,本書將這些知識(shí)技巧總結(jié)成冊(cè),主要介紹算法及其在相關(guān)問題中的應(yīng)用。本書依照由易及難的順序?qū)栴}進(jìn)行講解,章節(jié)的編排也參考了主題的難易程度及其相互的聯(lián)系,內(nèi)容較多的主題則按難易程度劃分為多個(gè)子主題分別介紹。各個(gè)主題由算法介紹和例題講解穿插而成。
只要是具有編程基礎(chǔ)知識(shí)的讀者,均適合閱讀本書。書中的源代碼均用C++實(shí)現(xiàn),不過只用到了其基本功能,所以即便讀者不熟悉C++也不影響閱讀。
【關(guān)于再版】
令人驚喜的是,本書的第1版受到了廣大讀者的高度評(píng)價(jià),在此表示感謝。特別是一些并不熱衷于程序設(shè)計(jì)競(jìng)賽的讀者也購(gòu)買了本書。這是因?yàn)橥ㄟ^本書不僅可以學(xué)到算法,更能學(xué)到其設(shè)計(jì)和運(yùn)用的思想。這正是本書劃時(shí)代的亮點(diǎn)。
本書第2版追加了計(jì)算幾何、搜索減枝、分治法和字符串相關(guān)算法4個(gè)主題。此外還追加了方便讀者加深理解的練習(xí)題,并為學(xué)有余力的讀者列出了書中未涉及的拓展主題,進(jìn)一步豐富了本書內(nèi)容。
★秋葉拓哉
Google Code Jam 2010 第9名
ACM-ICPC World Finals 2012 第11名
TopCoder Open 2012 Algorithm 第4名
昵稱iwi
★巖田陽(yáng)一
Google Code Jam 2009 第3名
TopCoder Open 2010 Marathon 冠軍
IPSC 2010 個(gè)人組 冠軍
昵稱wata
★北川宜稔
ACM-ICPC World Finals 2010第16名
昵稱kita_masa
譯者簡(jiǎn)介:
★巫澤俊
ACM-ICPC World Finals 2009 第6名
ACM-ICPC World Finals 2011 冠軍
Google Code Jam 2012 第7名
昵稱watashi和rejudge
★莊俊元
ACM-ICPC Asia Phuket Regional 2011 冠軍
2012年躋身ACM-ICPC World Finals以及百度Astar總決賽
昵稱navi和navimoe
★李津羽
浙江大學(xué)2011級(jí)計(jì)算機(jī)系博士生
在浙大CAD&CG實(shí)驗(yàn)室從事科研工作
第1章 蓄勢(shì)待發(fā)--準(zhǔn)備篇
1.1 何謂程序設(shè)計(jì)競(jìng)賽
1.2 最負(fù)盛名的程序設(shè)計(jì)競(jìng)賽
1.2.1 世界規(guī)模的大賽--Google Code Jam(GCJ)
1.2.2 向高排名看齊!--TopCoder
1.2.3 歷史最悠久的競(jìng)賽-- ACM-ICPC
1.2.4 面向中學(xué)生的信息學(xué)奧林匹克競(jìng)賽--JOI-IOI
1.2.5 通過網(wǎng)絡(luò)自動(dòng)評(píng)測(cè)--Online Judge(OJ)
1.3 本書的使用方法
1.3.1 本書所涉及的內(nèi)容
1.3.2 所用的編程語言
1.3.3 題目描述的處理
1.3.4 程序結(jié)構(gòu)
1.3.5 練習(xí)題
1.3.6 讀透本書后更上一層樓的練習(xí)方法
1.4 如何提交解答
1.4.1 POJ的提交方法
1.4.2 GCJ的提交方法
1.5 以高效的算法為目標(biāo)
1.5.1 什么是復(fù)雜度
1.5.2 關(guān)于運(yùn)行時(shí)間
1.6 輕松熱身
1.6.1 先從簡(jiǎn)單題開始
1.6.2 POJ的題目Ants
1.6.3 難度增加的抽簽問題
第2章 初出茅廬--初級(jí)篇
2.1 最基礎(chǔ)的“窮竭搜索”
2.1.1 遞歸函數(shù)
2.1.2 !
2.1.3 隊(duì)列
2.1.4 深度優(yōu)先搜索
2.1.5 寬度優(yōu)先搜索
2.1.6 特殊狀態(tài)的枚舉
2.1.7 剪枝
2.2 一往直前!貪心法
2.2.1 硬幣問題
2.2.2 區(qū)間問題
2.2.3 字典序最小問題
2.2.4 其他例題
2.3 記錄結(jié)果再利用的“動(dòng)態(tài)規(guī)劃”
2.3.1 記憶化搜索與動(dòng)態(tài)規(guī)劃
2.3.2 進(jìn)一步探討遞推關(guān)系
2.3.3 有關(guān)計(jì)數(shù)問題的DP
2.4 加工并存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)
2.4.1 樹和二叉樹
2.4.2 優(yōu)先隊(duì)列和堆
2.4.3 二叉搜索樹
2.4.4 并查集
2.5 它們其實(shí)都是“圖”
2.5.1 圖是什么
2.5.2 圖的表示
2.5.3 圖的搜索
2.5.4 最短路問題
2.5.5 最小生成樹
2.5.6 應(yīng)用問題
2.6 數(shù)學(xué)問題的解題竅門
2.6.1 輾轉(zhuǎn)相除法
2.6.2 有關(guān)素?cái)?shù)的基礎(chǔ)算法
2.6.3 模運(yùn)算
2.6.4 快速冪運(yùn)算
2.7 一起來挑戰(zhàn)GCJ的題目(1)
2.7.1 Minimum Scalar Product
2.7.2 Crazy Rows
2.7.3 Bribe the Prisoners
2.7.4 Millionaire
第3章 出類拔萃--中級(jí)篇
3.1 不光是查找值!“二分搜索”
3.1.1 從有序數(shù)組中查找某個(gè)值
3.1.2 假定一個(gè)解并判斷是否可行
3.1.3 最大化最小值
3.1.4 最大化平均值
3.2 常用技巧精選(一)
3.2.1 尺取法
3.2.2 反轉(zhuǎn)(開關(guān)問題)
3.2.3 彈性碰撞
3.2.4 折半枚舉(雙向搜索)
3.2.5 坐標(biāo)離散化
3.3 活用各種數(shù)據(jù)結(jié)構(gòu)
3.3.1 線段樹
3.3.2 Binary Indexed Tree
3.3.3 分桶法和平方分割
3.4 熟練掌握動(dòng)態(tài)規(guī)劃
3.4.1 狀態(tài)壓縮DP
3.4.2 矩陣的冪
3.4.3 利用數(shù)據(jù)結(jié)構(gòu)高效求解
3.5 借助水流解決問題的網(wǎng)絡(luò)流
3.5.1 最大流
3.5.2 最小割
3.5.3 二分圖匹配
3.5.4 一般圖匹配
3.5.5 匹配、邊覆蓋、獨(dú)立集和頂點(diǎn)覆蓋
3.5.6 最小費(fèi)用流
3.5.7 應(yīng)用問題
3.6 與平面和空間打交道的計(jì)算幾何
3.6.1 計(jì)算幾何基礎(chǔ)
3.6.2 極限情況
3.6.3 平面掃描
3.6.4 凸包
3.6.5 數(shù)值積分
3.7 一起來挑戰(zhàn)GCJ的題目(2)
3.7.1 Numbers
3.7.2 No Cheating
3.7.3 Stock Charts
3.7.4 Watering Plants
3.7.5 Number Sets
3.7.6 Wi-fi Towers
第4章 登峰造極--高級(jí)篇
4.1 更加復(fù)雜的數(shù)學(xué)問題
4.1.1 矩陣
4.1.2 模運(yùn)算的世界
4.1.3 計(jì)數(shù)
4.1.4 具有對(duì)稱性的計(jì)數(shù)
4.2 找出游戲的必勝策略
4.2.1 游戲與必勝策略
4.2.2 Nim
4.2.3 Grundy數(shù)
4.3 成為圖論大師之路
4.3.1 強(qiáng)連通分量分解
4.3.2 2-SAT
4.3.3 LCA
4.4 常用技巧精選(二)
4.4.1 棧的運(yùn)用
4.4.2 雙端隊(duì)列的運(yùn)用
4.4.3 倍增法
4.5 開動(dòng)腦筋智慧搜索
4.5.1 剪枝
4.5.2 A*與IDA*
4.6 劃分、解決、合并:分治法
4.6.1 數(shù)列上的分治法
4.6.2 樹上的分治法
4.6.3 平面上的分治法
4.7 華麗地處理字符串
4.7.1 字符串上的動(dòng)態(tài)規(guī)劃算法
4.7.2 字符串匹配
4.7.3 后綴數(shù)組
4.8 一起來挑戰(zhàn)GCJ的題目(3)
4.8.1 Mine Layer
4.8.2 Year of More Code Jam
4.8.3 Football Team
4.8.4 Endless Knight
4.8.5 The Year of Code Jam
本書中未涉及的拓展主題
書中例題列表
參考文獻(xiàn)