ACM國(guó)際大學(xué)生程序設(shè)計(jì)競(jìng)賽:知識(shí)與入門
定 價(jià):29 元
- 作者:俞勇 編
- 出版時(shí)間:2012/12/1
- ISBN:9787302294900
- 出 版 社:清華大學(xué)出版社
- 中圖法分類:TP311.1
- 頁(yè)碼:202
- 紙張:膠版紙
- 版次:1
- 開本:16開
acm國(guó)際大學(xué)生程序設(shè)計(jì)競(jìng)賽(acm-icpc)是國(guó)際上公認(rèn)的水平最高、規(guī)模最大、影響最深的計(jì)算機(jī)專業(yè)競(jìng)賽,目前全球參與人數(shù)達(dá)20多萬(wàn)!禔CM國(guó)際大學(xué)生程序設(shè)計(jì)競(jìng)賽:知識(shí)與入門》作者將16年的教練經(jīng)驗(yàn)與積累撰寫成本系列叢書,全面、深入而系統(tǒng)地將acm-icpc展現(xiàn)給讀者。本系列叢書包括《acm國(guó)際大學(xué)生程序設(shè)計(jì)競(jìng)賽:知識(shí)與入門》、《acm國(guó)際大學(xué)生程序設(shè)計(jì)競(jìng)賽:算法與實(shí)現(xiàn)》、《acm國(guó)際大學(xué)生程序設(shè)計(jì)競(jìng)賽:題目與解讀》、《acm國(guó)際大學(xué)生程序設(shè)計(jì)競(jìng)賽:比賽與思考》等4冊(cè),其中《acm國(guó)際大學(xué)生程序設(shè)計(jì)競(jìng)賽:知識(shí)與入門》介紹了acm-icpc的知識(shí)及其分類、進(jìn)階與角色、在線評(píng)測(cè)系統(tǒng);《acm國(guó)際大學(xué)生程序設(shè)計(jì)競(jìng)賽:算法與實(shí)現(xiàn)》介紹了acm-icpc算法分類、實(shí)現(xiàn)及索引;《acm國(guó)際大學(xué)生程序設(shè)計(jì)競(jìng)賽:題目與解讀》為各類算法配備經(jīng)典例題及題庫(kù),并提供解題思路;《acm國(guó)際大學(xué)生程序設(shè)計(jì)競(jìng)賽:比賽與思考》介紹了上海交通大學(xué)acm-icpc的訓(xùn)練及比賽,包括訓(xùn)練札記、賽場(chǎng)風(fēng)云、賽季縱橫、冠軍之路、崢嶸歲月。
《ACM國(guó)際大學(xué)生程序設(shè)計(jì)競(jìng)賽:知識(shí)與入門》適用于參加acm國(guó)際大學(xué)生程序設(shè)計(jì)競(jìng)賽的本科生和研究生,對(duì)參加青少年信息學(xué)奧林匹克競(jìng)賽的中學(xué)生也很有指導(dǎo)價(jià)值。同時(shí),作為程序設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)、算法等相關(guān)課程的拓展與提升,本叢書也是難得的教學(xué)輔助讀物。
寫在最前面的話
自從上海交通大學(xué)2002年第一次、2005年第二次獲得ACM國(guó)際大學(xué)生程序設(shè)計(jì)競(jìng)賽(ACM International Collegiate Programming Contest,簡(jiǎn)稱ACM-ICPC或ICPC)世界冠軍以來,總有記者邀請(qǐng)編者撰寫冠軍之路類的文章,也總有出版社希望編者出版ACM-ICPC競(jìng)賽類的書籍,因?yàn)闆]有想清楚怎么寫,所以一直沒動(dòng)筆。直到2010年上海交通大學(xué)第三次獲得ACM-ICPC世界冠軍后,編者決定出版一套系列叢書,包括《ACM國(guó)際大學(xué)生程序設(shè)計(jì)競(jìng)賽:知識(shí)與入門》、《ACM國(guó)際大學(xué)生程序設(shè)計(jì)競(jìng)賽:算法與實(shí)現(xiàn)》、《ACM國(guó)際大學(xué)生程序設(shè)計(jì)競(jìng)賽:題目與解讀》及《ACM國(guó)際大學(xué)生程序設(shè)計(jì)競(jìng)賽:比賽與思考》4冊(cè)書籍,全面、深入而系統(tǒng)地將ACM-ICPC展現(xiàn)給讀者,把上海交通大學(xué)十多年來對(duì)ACM-ICPC競(jìng)賽的感悟分享給讀者。
編寫此系列叢書的另一個(gè)重要原因是ACM-ICPC競(jìng)賽在中國(guó)大陸的迅猛發(fā)展。自從1996年ACM-ICPC引入中國(guó)大陸,前六屆僅設(shè)立1個(gè)賽區(qū),目前每年一般設(shè)立5個(gè)賽區(qū),并已有30所高校承辦過亞洲區(qū)預(yù)賽;參賽學(xué)校從不滿20所,到如今已達(dá)200多所;參賽人數(shù)從不到100人,到如今已超過12萬(wàn)人次;總決賽名額從起初的3個(gè),到如今已超過15個(gè)。同時(shí),中國(guó)大陸在ACM-ICPC競(jìng)賽上所取得的成績(jī)也舉世矚目。清華大學(xué)9次獲得總決賽獎(jiǎng)牌(3金5銀1銅),位居獎(jiǎng)牌榜之首,是實(shí)力最強(qiáng)、表現(xiàn)最穩(wěn)定的高校;上海交通大學(xué)8次獲得總決賽獎(jiǎng)牌(4金3銀1銅),3次奪得世界冠軍,算是目前國(guó)內(nèi)成績(jī)最好的高校;中山大學(xué)4次獲得總決賽獎(jiǎng)牌(2銀2銅),在生源不占優(yōu)勢(shì)的情況下,這一成績(jī)令人敬佩;復(fù)旦大學(xué)3次獲得總決賽獎(jiǎng)牌(1銀2銅),是公認(rèn)的強(qiáng)校;浙江大學(xué)2次獲得總決賽獎(jiǎng)牌(1金1銀),1次奪得世界冠軍,再次讓國(guó)人歡欣鼓舞;北京大學(xué)1次獲得總決賽獎(jiǎng)牌(1銅),隊(duì)員的綜合實(shí)力堪稱一流;最難能可貴的是,華南理工大學(xué)也獲得過總決賽的獎(jiǎng)牌(1銅),它告訴我們,ACM-ICPC不僅僅是“強(qiáng)!敝g的“對(duì)話”,只要堅(jiān)持參與就會(huì)斬獲成果。另外,至今已有37所大陸高校參加過全球總決賽,且不論成績(jī)?nèi)绾,他們(cè)谫悎?chǎng)上的奮斗亦值得稱道。
本系列叢書的第一冊(cè)《ACM國(guó)際大學(xué)生程序設(shè)計(jì)競(jìng)賽:知識(shí)與入門》分為三個(gè)部分。知識(shí)點(diǎn)部分基本涵蓋了競(jìng)賽中所涉及的主要知識(shí)點(diǎn),包括數(shù)學(xué)基礎(chǔ)、數(shù)據(jù)結(jié)構(gòu)、圖論、計(jì)算幾何、論題選編、求解策略等六個(gè)大類內(nèi)容。入門與進(jìn)階部分介紹了包括如何快速入門、如何提高自身以及團(tuán)隊(duì)水平等,主要根據(jù)上海交通大學(xué)ACM-ICPC隊(duì)多年參賽經(jīng)驗(yàn)總結(jié)而來。在線資源部分對(duì)一些常用的在線評(píng)測(cè)系統(tǒng)和網(wǎng)上比賽進(jìn)行了介紹。
本系列叢書的第二冊(cè)《ACM國(guó)際大學(xué)生程序設(shè)計(jì)競(jìng)賽:算法與實(shí)現(xiàn)》涵蓋了大部分ACM-ICPC競(jìng)賽常用的經(jīng)典算法,包括數(shù)學(xué)、圖論、數(shù)據(jù)結(jié)構(gòu)、計(jì)算幾何、論題選編五個(gè)大類,對(duì)每個(gè)算法的代碼實(shí)現(xiàn),都配有接口說明以及簡(jiǎn)略的算法闡述,并提供算法的完整程序。并收集了一些實(shí)用的知識(shí)點(diǎn)及積分表,方便讀者查找使用。
本系列叢書的第三冊(cè)《ACM國(guó)際大學(xué)生程序設(shè)計(jì)競(jìng)賽:題目與解讀》分為兩個(gè)部分。例題精講部分針對(duì)第二冊(cè)《ACM國(guó)際大學(xué)生程序設(shè)計(jì)競(jìng)賽:算法與實(shí)現(xiàn)》中的算法配備經(jīng)典例題,并提供細(xì)致的解題思路,讀者可以通過這一部分學(xué)習(xí)和掌握算法;海量題庫(kù)部分按照算法分類羅列出大量習(xí)題,并提供相應(yīng)的題解,讀者可以利用這一部分的題目進(jìn)行訓(xùn)練,更加熟練地運(yùn)用各類算法。
本系列叢書的第四冊(cè)《ACM國(guó)際大學(xué)生程序設(shè)計(jì)競(jìng)賽:比賽與思考》從120多名隊(duì)員、2400余篇文檔中精心挑選、編纂而成的文集,包括訓(xùn)練札記、賽場(chǎng)風(fēng)云、賽季縱橫、冠軍之路、崢嶸歲月,集中展現(xiàn)了上海交通大學(xué)ACM-ICPC隊(duì)16年的奮斗歷程,記載了這些隊(duì)員為了實(shí)現(xiàn)自己的夢(mèng)想而不懈努力、勇于拼搏的故事。
這是一套全面、系統(tǒng)地學(xué)習(xí)ACM-ICPC競(jìng)賽的知識(shí)類書籍;
這是一套詳盡、深入地熟悉ACM-ICPC競(jìng)賽的算法及題目的手冊(cè)類書籍;
這是一套程序設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)、算法等相關(guān)課程的拓展與提升類書籍;
這是一部上海交通大學(xué)ACM-ICPC隊(duì)的成長(zhǎng)史;
這是一部激勵(lì)更多學(xué)子勇敢追尋并實(shí)現(xiàn)自己最初夢(mèng)想的勵(lì)志書。
歷時(shí)2年零5個(gè)月,終于完成了本系列叢書,編者與隊(duì)員有一種如釋重負(fù)的感覺,因?yàn)槲覀儼殉霭孢@套叢書看得很重,這是我們16年的經(jīng)驗(yàn)與積累,希望對(duì)廣大讀者有用。
值此ACM-ICPC進(jìn)入中國(guó)大陸16周年、上海交通大學(xué)獲得ACM-ICPC世界冠軍10周年之際,謹(jǐn)以此系列叢書——
紀(jì)念我們?cè)?jīng)走過的路、度過的歲月;
獻(xiàn)給所有支持、幫助過我們的人……
俞 勇
2012年10月于上海
前 言
ACM國(guó)際大學(xué)生程序設(shè)計(jì)競(jìng)賽(ACM International Collegiate Programming Contest,簡(jiǎn)稱ACM-ICPC或ICPC)的試題覆蓋了計(jì)算機(jī)科學(xué)以及相關(guān)數(shù)學(xué)領(lǐng)域眾多知識(shí)點(diǎn)。這些知識(shí)通常會(huì)散落在各種書籍和論文之中,學(xué)習(xí)和查找起來相對(duì)麻煩。此外,競(jìng)賽中所考察的內(nèi)容具有一定的特殊性,即使是像由Thomas H. Cormen等編著的Introduction to Algorithms這樣的經(jīng)典書籍,其中介紹的東西也并非都是競(jìng)賽中的考察點(diǎn)。因此能夠有一本書針對(duì)ACM-ICPC競(jìng)賽所經(jīng)?疾斓闹R(shí)點(diǎn)進(jìn)行統(tǒng)一的介紹是有必要的。
本書分為三個(gè)部分,第一部分為入門與進(jìn)階,第二部分為知識(shí)點(diǎn)與求解策略,第三部分為在線資源。第一部分介紹的內(nèi)容包括如何快速入門、如何提高自身以及團(tuán)隊(duì)水平等,主要是編者根據(jù)多年的參賽經(jīng)驗(yàn)總結(jié)而來。第二部分基本涵蓋了競(jìng)賽中所涉及的主要知識(shí)點(diǎn),包括數(shù)學(xué)基礎(chǔ)、數(shù)據(jù)結(jié)構(gòu)、圖論、計(jì)算幾何、論題選編、求解策略等6個(gè)大類。第三部分對(duì)一些常用的在線評(píng)測(cè)系統(tǒng)和網(wǎng)上比賽進(jìn)行了介紹。其中,第一部分和第三部分主要針對(duì)初學(xué)者。
由于ACM-ICPC競(jìng)賽涉及到的知識(shí)點(diǎn)較多,很難在有限的篇幅里做到完全的覆蓋,編者主要根據(jù)重要性和實(shí)用性對(duì)內(nèi)容進(jìn)行了篩選。例如,在介紹平衡二叉樹時(shí),一般的數(shù)據(jù)結(jié)構(gòu)書籍往往會(huì)介紹AVL樹或是紅黑樹,但本書只介紹了理解和實(shí)現(xiàn)起來更為簡(jiǎn)單的伸展樹和Treap。
本書知識(shí)點(diǎn)部分的內(nèi)容采用的是一種類似百科全書的組織方式,所以并不需要一章一章地從前往后閱讀。讀者完全可以選擇一個(gè)自己感興趣的知識(shí)點(diǎn)進(jìn)行閱讀,并擴(kuò)展延伸到與之相關(guān)的其他知識(shí)點(diǎn)中。
本書編寫工作歷時(shí)兩年多,參與編寫工作的人員全部為上海交通大學(xué)ACM-ICPC隊(duì)的現(xiàn)役與退役隊(duì)員。他們參考了大量的書籍,并結(jié)合了多年的競(jìng)賽經(jīng)驗(yàn),對(duì)本書的內(nèi)容進(jìn)行選擇、撰寫和修改。
參與本書寫稿、審稿的人員主要有(按姓氏筆畫為序):烏辰洋、吳卓杰、張培超、陳彬毅、林承宇、易茜、鄭曌、姜嘯、曹正、曹雪智、商靜波、彭上夫、程宇、譚天。
在此,衷心感謝所有為此書出版做出直接或間接貢獻(xiàn)的人!也真心祝愿此書能夠給更多讀者帶來學(xué)習(xí)知識(shí)的快樂!
由于時(shí)間倉(cāng)促,作者水平有限,疏漏、不當(dāng)和不足之處在所難免,真誠(chéng)地希望專家和讀者朋友們不吝賜教。如果您在閱讀和使用此書過程中發(fā)現(xiàn)任何問題或有任何建議,懇請(qǐng)發(fā)郵件,我們將不勝感激。
編 者
2012年10月于上海
第一部分 入門與進(jìn)階
第1章 入門
1.1 acm-icpc競(jìng)賽介紹
1.2 新手入門
1.3 團(tuán)隊(duì)的分工與配合
1.4 訓(xùn)練
1.5 備戰(zhàn)分區(qū)賽
1.6 備戰(zhàn)總決賽
第2章 進(jìn)階
2.1 如何提高讀題能力
2.2 如何提高代碼能力
2.3 bug與debug
2.4 從做題者到命題者
第二部分 知識(shí)點(diǎn)與求解策略
第3章 數(shù)學(xué)基礎(chǔ)
3.1 函數(shù)增長(zhǎng)與復(fù)雜性分類
3.1.1 漸進(jìn)符號(hào)
3.1.2 階的計(jì)算
3.1.3 復(fù)雜性分類
.3.2 概率論
3.2.1 事件與概率
3.2.2 期望與方差
3.3 代數(shù)學(xué)
3.3.1 矩陣
3.3.2 行列式
3.3.3 解線性方程組
3.3.4 多項(xiàng)式
3.3.5 復(fù)數(shù)
3.3.6 群
3.4 組合學(xué)
3.4.1 排列與組合
3.4.2 鴿巢原理
3.4.3 容斥原理
3.4.4 特殊計(jì)數(shù)序列
3.4.5 pólya計(jì)數(shù)定理
3.5 博弈論
3.5.1 博弈樹
3.5.2 sg函數(shù)
3.5.3 nim游戲與nim和
3.6 數(shù)論
3.6.1 整除
3.6.2 不定方程
3.6.3 同余方程與歐拉定理
3.6.4 原根、離散對(duì)數(shù)和二項(xiàng)同余方程
3.6.5 連分?jǐn)?shù)
第4章 數(shù)據(jù)結(jié)構(gòu)
4.1 線性表
4.1.1 鏈表
4.1.2 棧
4.1.3 隊(duì)列
4.1.4 塊狀鏈表
4.2 集合
4.2.1 散列表
4.2.2 并查集
4.3 排序
4.3.1 樸素排序算法
4.3.1.1 插入排序
4.3.1.2 冒泡排序
4.3.2 高效排序算法
4.3.2.1 歸并排序算法
4.3.2.2 快速排序算法
4.3.2.3 線性排序算法
4.4 樹
4.4.1 堆
4.4.1.1 二叉堆
4.4.1.2 左偏樹
4.4.2 二叉樹
4.4.2.1 二叉搜索樹
4.4.2.2 treap
4.4.2.3 伸展樹
4.4.3 線段樹
第5章 圖論
5.1 圖
5.1.1 基本概念
5.1.1.1 圖的定義與基本術(shù)語(yǔ)
5.1.1.2 匹配與覆蓋
5.1.1.3 獨(dú)立集、團(tuán)與支配集
5.1.1.4 圖的染色
5.1.2 特殊圖的分類
5.1.3 圖的遍歷
5.1.3.1 深度優(yōu)先遍歷
5.1.3.2 廣度優(yōu)先遍歷
5.1.4 連通性
5.1.4.1 連通性的基本定義
5.1.4.2 割點(diǎn)與橋
5.1.4.3 強(qiáng)連通分量
5.1.4.4 應(yīng)用:2-sat
5.1.5 哈密頓路與歐拉路
5.1.5.1 哈密頓路
5.1.5.2 歐拉路
5.1.6 最短路
5.1.6.1 bellman-ford算法
5.1.6.2 dijkstra算法
5.1.6.3 floyd算法
5.2 樹
5.2.1 基本概念與遍歷
5.2.1.1 樹的基本定義與術(shù)語(yǔ)
5.2.1.2 樹的遍歷
5.2.2 生成樹
5.2.2.1 生成樹的基本概念
5.2.2.2 prim算法
5.2.2.3 kruskal算法
5.2.2.4 最小生成樹的變種
5.2.2.5 生成樹計(jì)數(shù)
5.3 二分圖
5.3.1 最大匹配
5.3.2 最大權(quán)匹配
5.3.3 穩(wěn)定婚姻
5.4 網(wǎng)絡(luò)流
5.4.1 基本概念
5.4.1.1 流網(wǎng)絡(luò)
5.4.1.2 殘量網(wǎng)絡(luò)
5.4.1.3 增廣路徑
5.4.1.4 最大流最小割定理
5.4.2 最大流算法
5.4.2.1 ford-fulkerson算法
5.4.2.2 dinic算法
5.4.3 費(fèi)用流
5.4.4 流與割模型
5.4.4.1 上下界網(wǎng)絡(luò)流
5.4.4.2 混合圖歐拉回路
5.4.4.3 最大權(quán)閉合子圖
第6章 計(jì)算幾何
6.1 向量
6.2 點(diǎn)的有序化
6.3 多邊形與圓
6.3.1 簡(jiǎn)單多邊形
6.3.2 凸包問題
6.3.3 圓的面積并
6.4 半平面交
6.5 經(jīng)典問題
6.5.1 線段求交
6.5.2 最近點(diǎn)對(duì)
6.5.3 最遠(yuǎn)點(diǎn)對(duì)
第7章 論題選編
7.1 背包問題
7.2 lca與rmq
7.3 快速傅里葉變換
7.4 字符串
7.4.1 字符串匹配
7.4.2 trie
7.4.3 ac自動(dòng)機(jī)
7.4.4 后綴數(shù)組
7.4.5 擴(kuò)展kmp
第8章 求解策略
8.1 搜索
8.2 分治
8.3 貪心
8.4 動(dòng)態(tài)規(guī)劃
8.5 隨機(jī)化
第三部分 在 線 資 源
第9章 在線評(píng)測(cè)系統(tǒng)
9.1 基本使用方法
9.2 usaco介紹
9.3 cii介紹
9.4 pku介紹
9.5 sgu介紹
9.6 spoj介紹
第10章 網(wǎng)上比賽
10.1 gcj介紹
10.2 topcoder介紹
10.3 codeforces介紹
參考文獻(xiàn)