此部分為隱藏內(nèi)容,請(qǐng)輸入驗(yàn)證碼后查看
掃描右側(cè)圖片或微信搜索 “ Java技術(shù)分享屋
” ,回復(fù) “ 驗(yàn)證碼
” ,獲取驗(yàn)證密碼。
本資料僅供讀者預(yù)覽及學(xué)習(xí)交流使用,不能用于商業(yè)用途,請(qǐng)?jiān)谙螺d后24小時(shí)內(nèi)刪除。如果喜歡,請(qǐng)購(gòu)買正版!
一.資料圖片
二.資料簡(jiǎn)介
《算法競(jìng)賽入門(mén)經(jīng)典》是一本算法競(jìng)賽的入門(mén)教材,把C/C++語(yǔ)言、算法和解題有機(jī)地結(jié)合在了一起,淡化理論,注重學(xué)習(xí)方法和實(shí)踐技巧。全書(shū)內(nèi)容分為11章,包括程序設(shè)計(jì)入門(mén)、循環(huán)結(jié)構(gòu)程序設(shè)計(jì)、數(shù)組和字符串、函數(shù)和遞歸、基礎(chǔ)題目選解、數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)、暴力求解法、高效算法設(shè)計(jì)、動(dòng)態(tài)規(guī)劃初步、數(shù)學(xué)概念與方法、圖論模型與算法,覆蓋了算法競(jìng)賽入門(mén)所需的主要知識(shí)點(diǎn),并附有大量習(xí)題。書(shū)中的代碼規(guī)范、簡(jiǎn)潔、易懂,不僅能幫助讀者理解算法原理,還能教會(huì)讀者很多實(shí)用的編程技巧。另外,書(shū)中包含的各種開(kāi)發(fā)、測(cè)試和調(diào)試技巧也是在傳統(tǒng)的語(yǔ)言、算法類書(shū)籍中難以見(jiàn)到的。
《算法競(jìng)賽入門(mén)經(jīng)典》可作為全國(guó)青少年信息學(xué)奧林匹克聯(lián)賽(NOIP)的復(fù)賽教材及ACM國(guó)際大學(xué)。
三.作者簡(jiǎn)介
劉汝佳,1982年12月生,高中畢業(yè)于重慶市外國(guó)語(yǔ)學(xué)校。
2000年3月獲得NOI2000全國(guó)青少年信息學(xué)奧林匹克競(jìng)賽一等獎(jiǎng)第四名,進(jìn)入國(guó)家集訓(xùn)隊(duì),并因此保送到清華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)系。大一時(shí)獲2001年ACM/ICPC國(guó)際大學(xué)生程序設(shè)計(jì)競(jìng)賽亞洲一上海賽區(qū)冠軍和2002年世界總決賽銀牌(世界第四),2005年獲學(xué)士學(xué)位,2008年獲碩士學(xué)位。
學(xué)生時(shí)代曾為中國(guó)計(jì)算機(jī)學(xué)會(huì)NOI科學(xué)委員會(huì)學(xué)生委員,擔(dān)任IOI2002-2008中國(guó)國(guó)家隊(duì)教練,并為NOI系列比賽命題十余道?,F(xiàn)為NOI競(jìng)賽委員會(huì)委員,并在NOI 25周年時(shí)獲得中國(guó)計(jì)算機(jī)學(xué)會(huì)頒發(fā)的“特別貢獻(xiàn)獎(jiǎng)”。
2004年至今共為ACM/ICPC亞洲賽區(qū)命題二十余道,擔(dān)任6次裁判和2次命題總監(jiān),并應(yīng)邀參加IOI和ACM/lCPC相關(guān)國(guó)際研討會(huì),發(fā)表論文兩篇。
2004年初作為第一作者出版專著《算法藝術(shù)與信息學(xué)競(jìng)賽》,2009年出版譯著《編程挑戰(zhàn)》。
多年來(lái)在全國(guó)二十余個(gè)城市進(jìn)行中學(xué)生競(jìng)賽培訓(xùn)工作,為北京、上海、吉隆坡等地的著名高校授課與宣講,并多次與TopCodet、百度和網(wǎng)易有道等知名企業(yè)合作舉辦比賽,讓更多的IT人才獲得展示自我的平臺(tái)。
四.資料目錄
第1部分 語(yǔ)言篇第1章 程序設(shè)計(jì)入門(mén) 1
1.1 算術(shù)表達(dá)式 1
1.2 變量及其輸入 3
1.3 順序結(jié)構(gòu)程序設(shè)計(jì) 6
1.4 分支結(jié)構(gòu)程序設(shè)計(jì) 9
1.5 小結(jié)與習(xí)題 13
1.5.1 數(shù)據(jù)類型實(shí)驗(yàn) 13
1.5.2 scanf輸入格式實(shí)驗(yàn) 13
1.5.3 printf語(yǔ)句輸出實(shí)驗(yàn) 13
1.5.4 測(cè)測(cè)你的實(shí)踐能力 14
1.5.5 小結(jié) 14
1.5.6 上機(jī)練習(xí) 15
第2章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 16
2.1 for循環(huán) 16
2.2 循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 19
2.3 文件操作 23
2.4 小結(jié)與習(xí)題 27
2.4.1 輸出技巧 28
2.4.2 浮點(diǎn)數(shù)陷阱 28
2.4.3 64位整數(shù) 28
2.4.4 C++中的輸入輸出 29
2.4.5 小結(jié) 30
2.4.6 上機(jī)練習(xí) 31
第3章 數(shù)組和字符串 33
3.1 數(shù)組 33
3.2 字符數(shù)組 37
3.3 最長(zhǎng)回文子串 41
3.4 小結(jié)與習(xí)題 45
3.4.1 必要的存儲(chǔ)量 45
3.4.2 用ASCII編碼表示字符 45
3.4.3 補(bǔ)碼表示法 46
3.4.4 重新實(shí)現(xiàn)庫(kù)函數(shù) 47
3.4.5 字符串處理的常見(jiàn)問(wèn)題 47
3.4.6 關(guān)于輸入輸出 47
3.4.7 I/O的效率 47
3.4.8 小結(jié) 49
3.4.9 上機(jī)練習(xí) 50
第4章 函數(shù)和遞歸 51
4.1 數(shù)學(xué)函數(shù) 51
4.1.1 簡(jiǎn)單函數(shù)的編寫(xiě) 51
4.1.2 使用結(jié)構(gòu)體的函數(shù) 52
4.1.3 應(yīng)用舉例 53
4.2 地址和指針 56
4.2.1 變量交換 56
4.2.2 調(diào)用棧 57
4.2.3 用指針實(shí)現(xiàn)變量交換 59
4.2.4 初學(xué)者易犯的錯(cuò)誤 61
4.3 遞歸 62
4.3.1 遞歸定義 62
4.3.2 遞歸函數(shù) 63
4.3.3 C語(yǔ)言對(duì)遞歸的支持 64
4.3.4 段錯(cuò)誤與棧溢出 66
4.4 本章小結(jié) 67
4.4.1 小問(wèn)題集錦 67
4.4.2 小結(jié) 68
第2部分 算法篇
第5章 基礎(chǔ)題目選解 69
5.1 字符串 69
5.1.1 WERTYU 69
5.1.2 TeX括號(hào) 70
5.1.3 周期串 71
5.2 高精度運(yùn)算 71
5.2.1 小學(xué)生算術(shù) 72
5.2.2 階乘的精確值 72
5.2.3 高精度運(yùn)算類bign 73
5.2.4 重載bign的常用運(yùn)算符 75
5.3 排序與檢索 77
5.3.1 6174問(wèn)題 77
5.3.2 字母重排 78
5.4 數(shù)學(xué)基礎(chǔ) 81
5.4.1 Cantor的數(shù)表 81
5.4.2 因子和階乘 82
5.4.3 果園里的樹(shù) 84
5.4.4 多少塊土地 86
5.5 訓(xùn)練參考 86
5.5.1 黑盒測(cè)試 86
5.5.2 在線評(píng)測(cè)系統(tǒng) 87
5.5.3 推薦題目 88
第6章 數(shù)據(jù)結(jié)構(gòu)基礎(chǔ) 89
6.1 棧和隊(duì)列 89
6.1.1 卡片游戲 89
6.1.2 鐵軌 91
6.2 鏈表 93
6.2.1 初步分析 93
6.2.2 鏈?zhǔn)浇Y(jié)構(gòu) 95
6.2.3 對(duì)比測(cè)試 96
6.2.4 隨機(jī)數(shù)發(fā)生器 98
6.3 二叉樹(shù) 99
6.3.1 小球下落 99
6.3.2 層次遍歷 101
6.3.3 二叉樹(shù)重建 105
6.4 圖 106
6.4.1 黑白圖像 107
6.4.2 走迷宮 108
6.4.3 拓?fù)渑判?110
6.4.4 歐拉回路 111
6.5 訓(xùn)練參考 112
第7章 暴力求解法 114
7.1 簡(jiǎn)單枚舉 114
7.1.1 除法 114
7.1.2 最大乘積 115
7.1.3 分?jǐn)?shù)拆分 115
7.1.4 雙基回文數(shù) 116
7.2 枚舉排列 116
7.2.1 生成1~n的排列 116
7.2.2 生成可重集的排列 118
7.2.3 解答樹(shù) 118
7.2.4 下一個(gè)排列 119
7.3 子集生成 120
7.3.1 增量構(gòu)造法 120
7.3.2 位向量法 121
7.3.3 二進(jìn)制法 122
7.4 回溯法 123
7.4.1 八皇后問(wèn)題 123
7.4.2 素?cái)?shù)環(huán) 126
7.4.3 困難的串 127
7.4.4 帶寬 128
7.5 隱式圖搜索 129
7.5.1 隱式樹(shù)的遍歷 129
7.5.2 一般隱式圖的遍歷 130
7.5.3 八數(shù)碼問(wèn)題 131
7.5.4 結(jié)點(diǎn)查找表 133
7.6 訓(xùn)練參考 136
第8章 高效算法設(shè)計(jì) 138
8.1 算法分析初步 138
8.1.1 漸進(jìn)時(shí)間復(fù)雜度 138
8.1.2 上界分析 140
8.1.3 分治法 140
8.1.4 正確對(duì)待算法分析結(jié)果 142
8.2 再談排序與檢索 143
8.2.1 歸并排序 143
8.2.2 快速排序 145
8.2.3 二分查找 145
8.3 遞歸與分治 148
8.3.1 棋盤(pán)覆蓋問(wèn)題 148
8.3.2 循環(huán)日程表問(wèn)題 149
8.3.3 巨人與鬼 149
8.3.4 非線性方程求根 150
8.3.5 最大值最小化 151
8.4 貪心法 151
8.4.1 最優(yōu)裝載問(wèn)題 151
8.4.2 部分背包問(wèn)題 152
8.4.3 乘船問(wèn)題 152
8.4.4 選擇不相交區(qū)間 152
8.4.5 區(qū)間選點(diǎn)問(wèn)題 153
8.4.6 區(qū)間覆蓋問(wèn)題 154
8.4.7 Huffman編碼 154
8.5 訓(xùn)練參考 156
第3部分 競(jìng)賽篇
第9章 動(dòng)態(tài)規(guī)劃初步 158
9.1 數(shù)字三角形 158
9.1.1 問(wèn)題描述與狀態(tài)定義 158
9.1.2 記憶化搜索與遞推 159
9.2 DAG上的動(dòng)態(tài)規(guī)劃 161
9.2.1 DAG模型 161
9.2.2 最長(zhǎng)路及其字典序 162
9.2.3 固定終點(diǎn)的最長(zhǎng)路和最短路 163
9.3 0-1背包問(wèn)題 167
9.3.1 多階段決策問(wèn)題 167
9.3.2 規(guī)劃方向 168
9.3.3 滾動(dòng)數(shù)組 169
9.4 遞歸結(jié)構(gòu)中的動(dòng)態(tài)規(guī)劃 170
9.4.1 表達(dá)式上的動(dòng)態(tài)規(guī)劃 170
9.4.2 凸多邊形上的動(dòng)態(tài)規(guī)劃 171
9.4.3 樹(shù)上的動(dòng)態(tài)規(guī)劃 171
9.5 集合上的動(dòng)態(tài)規(guī)劃 172
9.5.1 狀態(tài)及其轉(zhuǎn)移 173
9.5.2 隱含的階段 173
9.6 訓(xùn)練參考 174
第10章 數(shù)學(xué)概念與方法 176
10.1 數(shù)論初步 176
10.1.1 除法表達(dá)式 176
10.1.2 無(wú)平方因子的數(shù) 178
10.1.3 直線上的點(diǎn) 179
10.1.4 同余與模算術(shù) 180
10.2 排列與組合 182
10.2.1 楊輝三角與二項(xiàng)式定理 182
10.2.2 數(shù)論中的計(jì)數(shù)問(wèn)題 184
10.2.3 編碼與解碼 186
10.2.4 離散概率初步 187
10.3 遞推關(guān)系 188
10.3.1 漢諾塔 188
10.3.2 Fibonacci數(shù)列 189
10.3.3 Catalan數(shù) 191
10.3.4 危險(xiǎn)的組合 192
10.3.5 統(tǒng)計(jì)n-k特殊集的數(shù)目 193
10.4 訓(xùn)練參考 194
第11章 圖論模型與算法 196
11.1 再談樹(shù) 196
11.1.1 無(wú)根樹(shù)轉(zhuǎn)有根樹(shù) 196
11.1.2 表達(dá)式樹(shù) 197
11.1.3 最小生成樹(shù) 199
11.1.4 并查集 200
11.2 最短路問(wèn)題 201
11.2.1 Dijkstra算法 202
11.2.2 稀疏圖的鄰接表 203
11.2.3 使用優(yōu)先隊(duì)列的Dijkstra算法 204
11.2.4 Bellman-Ford算法 205
11.2.5 Floyd算法 206
11.3 網(wǎng)絡(luò)流初步 207
11.3.1 最大流問(wèn)題 207
11.3.2 增廣路算法 208
11.3.3 最小割最大流定理 210
11.3.4 最小費(fèi)用最大流問(wèn)題 211
11.4 進(jìn)一步學(xué)習(xí)的參考 212
11.4.1 編程語(yǔ)言 213
11.4.2 數(shù)據(jù)結(jié)構(gòu) 213
11.4.3 算法設(shè)計(jì) 213
11.4.4 數(shù)學(xué) 214
11.4.5 參賽指南 214
11.5 訓(xùn)練參考 215
附錄A 開(kāi)發(fā)環(huán)境與方法 216
A.1 命令行 216
A.1.1 文件系統(tǒng) 216
A.1.2 進(jìn)程 217
A.1.3 程序的執(zhí)行 217
A.1.4 重定向和管道 218
A.1.5 常見(jiàn)命令 218
A.2 操作系統(tǒng)腳本編程入門(mén) 219
A.2.1 Windows下的批處理 219
A.2.2 Linux下的Bash腳本 220
A.2.3 再談隨機(jī)數(shù) 221
A.3 編譯器和調(diào)試器 221
A.3.1 gcc的安裝和測(cè)試 221
A.3.2 常見(jiàn)編譯選項(xiàng) 222
A.3.3 gdb簡(jiǎn)介 223
A.3.4 gdb的高級(jí)功能 224
A.4 淺談IDE 225