ACM國際大學(xué)生程序設(shè)計(jì)競賽:知識與入門
定 價:29 元
- 作者:俞勇 編
- 出版時間:2012/12/1
- ISBN:9787302294900
- 出 版 社:清華大學(xué)出版社
- 中圖法分類:TP311.1
- 頁碼:202
- 紙張:膠版紙
- 版次:1
- 開本:16開
acm國際大學(xué)生程序設(shè)計(jì)競賽(acm-icpc)是國際上公認(rèn)的水平最高、規(guī)模最大、影響最深的計(jì)算機(jī)專業(yè)競賽,目前全球參與人數(shù)達(dá)20多萬!禔CM國際大學(xué)生程序設(shè)計(jì)競賽:知識與入門》作者將16年的教練經(jīng)驗(yàn)與積累撰寫成本系列叢書,全面、深入而系統(tǒng)地將acm-icpc展現(xiàn)給讀者。本系列叢書包括《acm國際大學(xué)生程序設(shè)計(jì)競賽:知識與入門》、《acm國際大學(xué)生程序設(shè)計(jì)競賽:算法與實(shí)現(xiàn)》、《acm國際大學(xué)生程序設(shè)計(jì)競賽:題目與解讀》、《acm國際大學(xué)生程序設(shè)計(jì)競賽:比賽與思考》等4冊,其中《acm國際大學(xué)生程序設(shè)計(jì)競賽:知識與入門》介紹了acm-icpc的知識及其分類、進(jìn)階與角色、在線評測系統(tǒng);《acm國際大學(xué)生程序設(shè)計(jì)競賽:算法與實(shí)現(xiàn)》介紹了acm-icpc算法分類、實(shí)現(xiàn)及索引;《acm國際大學(xué)生程序設(shè)計(jì)競賽:題目與解讀》為各類算法配備經(jīng)典例題及題庫,并提供解題思路;《acm國際大學(xué)生程序設(shè)計(jì)競賽:比賽與思考》介紹了上海交通大學(xué)acm-icpc的訓(xùn)練及比賽,包括訓(xùn)練札記、賽場風(fēng)云、賽季縱橫、冠軍之路、崢嶸歲月。
《ACM國際大學(xué)生程序設(shè)計(jì)競賽:知識與入門》適用于參加acm國際大學(xué)生程序設(shè)計(jì)競賽的本科生和研究生,對參加青少年信息學(xué)奧林匹克競賽的中學(xué)生也很有指導(dǎo)價值。同時,作為程序設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)、算法等相關(guān)課程的拓展與提升,本叢書也是難得的教學(xué)輔助讀物。
寫在最前面的話
自從上海交通大學(xué)2002年第一次、2005年第二次獲得ACM國際大學(xué)生程序設(shè)計(jì)競賽(ACM International Collegiate Programming Contest,簡稱ACM-ICPC或ICPC)世界冠軍以來,總有記者邀請編者撰寫冠軍之路類的文章,也總有出版社希望編者出版ACM-ICPC競賽類的書籍,因?yàn)闆]有想清楚怎么寫,所以一直沒動筆。直到2010年上海交通大學(xué)第三次獲得ACM-ICPC世界冠軍后,編者決定出版一套系列叢書,包括《ACM國際大學(xué)生程序設(shè)計(jì)競賽:知識與入門》、《ACM國際大學(xué)生程序設(shè)計(jì)競賽:算法與實(shí)現(xiàn)》、《ACM國際大學(xué)生程序設(shè)計(jì)競賽:題目與解讀》及《ACM國際大學(xué)生程序設(shè)計(jì)競賽:比賽與思考》4冊書籍,全面、深入而系統(tǒng)地將ACM-ICPC展現(xiàn)給讀者,把上海交通大學(xué)十多年來對ACM-ICPC競賽的感悟分享給讀者。
編寫此系列叢書的另一個重要原因是ACM-ICPC競賽在中國大陸的迅猛發(fā)展。自從1996年ACM-ICPC引入中國大陸,前六屆僅設(shè)立1個賽區(qū),目前每年一般設(shè)立5個賽區(qū),并已有30所高校承辦過亞洲區(qū)預(yù)賽;參賽學(xué)校從不滿20所,到如今已達(dá)200多所;參賽人數(shù)從不到100人,到如今已超過12萬人次;總決賽名額從起初的3個,到如今已超過15個。同時,中國大陸在ACM-ICPC競賽上所取得的成績也舉世矚目。清華大學(xué)9次獲得總決賽獎牌(3金5銀1銅),位居獎牌榜之首,是實(shí)力最強(qiáng)、表現(xiàn)最穩(wěn)定的高校;上海交通大學(xué)8次獲得總決賽獎牌(4金3銀1銅),3次奪得世界冠軍,算是目前國內(nèi)成績最好的高校;中山大學(xué)4次獲得總決賽獎牌(2銀2銅),在生源不占優(yōu)勢的情況下,這一成績令人敬佩;復(fù)旦大學(xué)3次獲得總決賽獎牌(1銀2銅),是公認(rèn)的強(qiáng)校;浙江大學(xué)2次獲得總決賽獎牌(1金1銀),1次奪得世界冠軍,再次讓國人歡欣鼓舞;北京大學(xué)1次獲得總決賽獎牌(1銅),隊(duì)員的綜合實(shí)力堪稱一流;最難能可貴的是,華南理工大學(xué)也獲得過總決賽的獎牌(1銅),它告訴我們,ACM-ICPC不僅僅是“強(qiáng)!敝g的“對話”,只要堅(jiān)持參與就會斬獲成果。另外,至今已有37所大陸高校參加過全球總決賽,且不論成績?nèi)绾,他們在賽場上的奮斗亦值得稱道。
本系列叢書的第一冊《ACM國際大學(xué)生程序設(shè)計(jì)競賽:知識與入門》分為三個部分。知識點(diǎn)部分基本涵蓋了競賽中所涉及的主要知識點(diǎn),包括數(shù)學(xué)基礎(chǔ)、數(shù)據(jù)結(jié)構(gòu)、圖論、計(jì)算幾何、論題選編、求解策略等六個大類內(nèi)容。入門與進(jìn)階部分介紹了包括如何快速入門、如何提高自身以及團(tuán)隊(duì)水平等,主要根據(jù)上海交通大學(xué)ACM-ICPC隊(duì)多年參賽經(jīng)驗(yàn)總結(jié)而來。在線資源部分對一些常用的在線評測系統(tǒng)和網(wǎng)上比賽進(jìn)行了介紹。
本系列叢書的第二冊《ACM國際大學(xué)生程序設(shè)計(jì)競賽:算法與實(shí)現(xiàn)》涵蓋了大部分ACM-ICPC競賽常用的經(jīng)典算法,包括數(shù)學(xué)、圖論、數(shù)據(jù)結(jié)構(gòu)、計(jì)算幾何、論題選編五個大類,對每個算法的代碼實(shí)現(xiàn),都配有接口說明以及簡略的算法闡述,并提供算法的完整程序。并收集了一些實(shí)用的知識點(diǎn)及積分表,方便讀者查找使用。
本系列叢書的第三冊《ACM國際大學(xué)生程序設(shè)計(jì)競賽:題目與解讀》分為兩個部分。例題精講部分針對第二冊《ACM國際大學(xué)生程序設(shè)計(jì)競賽:算法與實(shí)現(xiàn)》中的算法配備經(jīng)典例題,并提供細(xì)致的解題思路,讀者可以通過這一部分學(xué)習(xí)和掌握算法;海量題庫部分按照算法分類羅列出大量習(xí)題,并提供相應(yīng)的題解,讀者可以利用這一部分的題目進(jìn)行訓(xùn)練,更加熟練地運(yùn)用各類算法。
本系列叢書的第四冊《ACM國際大學(xué)生程序設(shè)計(jì)競賽:比賽與思考》從120多名隊(duì)員、2400余篇文檔中精心挑選、編纂而成的文集,包括訓(xùn)練札記、賽場風(fēng)云、賽季縱橫、冠軍之路、崢嶸歲月,集中展現(xiàn)了上海交通大學(xué)ACM-ICPC隊(duì)16年的奮斗歷程,記載了這些隊(duì)員為了實(shí)現(xiàn)自己的夢想而不懈努力、勇于拼搏的故事。
這是一套全面、系統(tǒng)地學(xué)習(xí)ACM-ICPC競賽的知識類書籍;
這是一套詳盡、深入地熟悉ACM-ICPC競賽的算法及題目的手冊類書籍;
這是一套程序設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)、算法等相關(guān)課程的拓展與提升類書籍;
這是一部上海交通大學(xué)ACM-ICPC隊(duì)的成長史;
這是一部激勵更多學(xué)子勇敢追尋并實(shí)現(xiàn)自己最初夢想的勵志書。
歷時2年零5個月,終于完成了本系列叢書,編者與隊(duì)員有一種如釋重負(fù)的感覺,因?yàn)槲覀儼殉霭孢@套叢書看得很重,這是我們16年的經(jīng)驗(yàn)與積累,希望對廣大讀者有用。
值此ACM-ICPC進(jìn)入中國大陸16周年、上海交通大學(xué)獲得ACM-ICPC世界冠軍10周年之際,謹(jǐn)以此系列叢書——
紀(jì)念我們曾經(jīng)走過的路、度過的歲月;
獻(xiàn)給所有支持、幫助過我們的人……
俞 勇
2012年10月于上海
前 言
ACM國際大學(xué)生程序設(shè)計(jì)競賽(ACM International Collegiate Programming Contest,簡稱ACM-ICPC或ICPC)的試題覆蓋了計(jì)算機(jī)科學(xué)以及相關(guān)數(shù)學(xué)領(lǐng)域眾多知識點(diǎn)。這些知識通常會散落在各種書籍和論文之中,學(xué)習(xí)和查找起來相對麻煩。此外,競賽中所考察的內(nèi)容具有一定的特殊性,即使是像由Thomas H. Cormen等編著的Introduction to Algorithms這樣的經(jīng)典書籍,其中介紹的東西也并非都是競賽中的考察點(diǎn)。因此能夠有一本書針對ACM-ICPC競賽所經(jīng)?疾斓闹R點(diǎn)進(jìn)行統(tǒng)一的介紹是有必要的。
本書分為三個部分,第一部分為入門與進(jìn)階,第二部分為知識點(diǎn)與求解策略,第三部分為在線資源。第一部分介紹的內(nèi)容包括如何快速入門、如何提高自身以及團(tuán)隊(duì)水平等,主要是編者根據(jù)多年的參賽經(jīng)驗(yàn)總結(jié)而來。第二部分基本涵蓋了競賽中所涉及的主要知識點(diǎn),包括數(shù)學(xué)基礎(chǔ)、數(shù)據(jù)結(jié)構(gòu)、圖論、計(jì)算幾何、論題選編、求解策略等6個大類。第三部分對一些常用的在線評測系統(tǒng)和網(wǎng)上比賽進(jìn)行了介紹。其中,第一部分和第三部分主要針對初學(xué)者。
由于ACM-ICPC競賽涉及到的知識點(diǎn)較多,很難在有限的篇幅里做到完全的覆蓋,編者主要根據(jù)重要性和實(shí)用性對內(nèi)容進(jìn)行了篩選。例如,在介紹平衡二叉樹時,一般的數(shù)據(jù)結(jié)構(gòu)書籍往往會介紹AVL樹或是紅黑樹,但本書只介紹了理解和實(shí)現(xiàn)起來更為簡單的伸展樹和Treap。
本書知識點(diǎn)部分的內(nèi)容采用的是一種類似百科全書的組織方式,所以并不需要一章一章地從前往后閱讀。讀者完全可以選擇一個自己感興趣的知識點(diǎn)進(jìn)行閱讀,并擴(kuò)展延伸到與之相關(guān)的其他知識點(diǎn)中。
本書編寫工作歷時兩年多,參與編寫工作的人員全部為上海交通大學(xué)ACM-ICPC隊(duì)的現(xiàn)役與退役隊(duì)員。他們參考了大量的書籍,并結(jié)合了多年的競賽經(jīng)驗(yàn),對本書的內(nèi)容進(jìn)行選擇、撰寫和修改。
參與本書寫稿、審稿的人員主要有(按姓氏筆畫為序):烏辰洋、吳卓杰、張培超、陳彬毅、林承宇、易茜、鄭曌、姜嘯、曹正、曹雪智、商靜波、彭上夫、程宇、譚天。
在此,衷心感謝所有為此書出版做出直接或間接貢獻(xiàn)的人!也真心祝愿此書能夠給更多讀者帶來學(xué)習(xí)知識的快樂!
由于時間倉促,作者水平有限,疏漏、不當(dāng)和不足之處在所難免,真誠地希望專家和讀者朋友們不吝賜教。如果您在閱讀和使用此書過程中發(fā)現(xiàn)任何問題或有任何建議,懇請發(fā)郵件,我們將不勝感激。
編 者
2012年10月于上海
第一部分 入門與進(jìn)階
第1章 入門
1.1 acm-icpc競賽介紹
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 從做題者到命題者
第二部分 知識點(diǎn)與求解策略
第3章 數(shù)學(xué)基礎(chǔ)
3.1 函數(shù)增長與復(fù)雜性分類
3.1.1 漸進(jìn)符號
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 原根、離散對數(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ù)語
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ù)語
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 簡單多邊形
6.3.2 凸包問題
6.3.3 圓的面積并
6.4 半平面交
6.5 經(jīng)典問題
6.5.1 線段求交
6.5.2 最近點(diǎn)對
6.5.3 最遠(yuǎn)點(diǎn)對
第7章 論題選編
7.1 背包問題
7.2 lca與rmq
7.3 快速傅里葉變換
7.4 字符串
7.4.1 字符串匹配
7.4.2 trie
7.4.3 ac自動機(jī)
7.4.4 后綴數(shù)組
7.4.5 擴(kuò)展kmp
第8章 求解策略
8.1 搜索
8.2 分治
8.3 貪心
8.4 動態(tài)規(guī)劃
8.5 隨機(jī)化
第三部分 在 線 資 源
第9章 在線評測系統(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)