算法竞赛入门经典+挑战编程+USACO
下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成。打牢基础,厚积薄发。
一、UVaOJ http://uva.onlinejudge.org
西班牙Valladolid大学的程序在线评测系统,是历史最悠久、最著名的OJ。
二、《算法竞赛入门经典》 刘汝佳 (UVaOJ 351道题)
以下部分内容摘自:http://sdkdacm.5d6d.com/thread-6-1-1.html
“AOAPC I”是刘汝佳(大名鼎鼎的SRbGa)写的《算法竞赛入门经典》,在书中每章最后一节都推荐了一些UVaOJ上的题目作为课后练习题。《算法竞赛入门经典》全书内容分为三部分:语言篇、算法篇和竞赛篇。本书的特点是以讲解例子为主、引入相关知识,适合于培养自学能力、锻炼脑力、扩展知识面、训练编程技巧,竞赛训练的针对性非常强,包括附录都是为了辅助训练准备的,是一本非常优秀的编程竞赛入门基础书。但本书不是一个完整详细讲解语言、数据结构和算法知识的教材或者手册。虽然书中自称适合零基础的初学者,但显然是理解能力非常强的一小部分初学者,大多数初学者在使用本书练习编程的时候,还是需要一本C语言教材、数据结构和算法教材。
第1部分语言篇(前4章)简要介绍了C语言的知识,有针对性的讲解了C语言在程序设计竞赛中常见的应用,这些是一般C语言书中不涉及的,对竞赛入门是大有帮助。虽然这一部分从内容设计上看是针对零编程基础的读者,但是作为C语言入门显然是不足够的、并且跨度较大。
学完后除了完成书上的练习题外,还应该可以解决UVA中: Volume 0. Getting Started 12道题。
第2部分算法篇(5~8章),从简单的编程题目开始,引入数据结构和算法的基础知识。并且介绍了如何在Online Judge系统(OJ)上做题,进而引导读者开始编程训练,进入程序设计竞赛的领域。
第5章,基础题目, Volume 1. Elementary Problem Solving 57道题。
第6章,基础数据结构, Volume 2. Data Structures 32道题。
第7章,暴力, Volume 3. Brute Force 68道题。
第8章,算法设计, Volume 4. Algorithm Design 34道题。
第3部分竞赛篇(9~11章),在第2部分的基础上,介绍了一些竞赛常用的基础知识和思路,进一步练习编程能力,培养求解问题的建模能力。
第9章,动态规划, Volume 5. Dynamic Programming 60道题。
第10章,数学方法,Volume 6. Mathematical Concepts and Methods 62道题。
第11章,图论模型,Volume 7. Graph Algorithms and Implementation Techniques 26道题。
三、《挑战编程》 Programming challenge (UVaOJ 112道题目)
作者:(美国)斯基纳 (Sterven S.Skiena) 译者:刘汝佳
Steven S.Skiena是美国Stony Brook大学计算机教授,研究方向包括图、串和几何算法的设计和应用(尤其是生物方面)。他曾获ONR青年研究员奖和IEEE计算机科学与工程本科教学奖,并著有四本书籍,包括“The Algorithm Design Manual”和“Calculated Bets:Computers,Gambling,andMathematical Modeling to Win”。
译者序:本书的目标读者便是那些已经具备初步的编程技能,对程序设计竞赛充满好奇,希望有机会武装自己、接受编程挑战的人,以及他们的老师和教练(甚至父母)。即使不参加任何竞赛,从本书的编程挑战中学到的东西,也会对程序员的职业生涯产生重要影响,更不用说这些挑战本身就是充满乐趣、引人入胜的。
第一章:入门
1.1 PC/UVa 题号: 110101/100 The 3n+1 problem (3n+1 问题)
1.2 PC/UVa 题号: 110102/10189 Minesweeper (扫雷)
1.3 PC/UVa 题号: 110103/10137 The Trip (旅行)
1.4 PC/UVa 题号: 110104/706 LC-Display (液晶显示屏)
1.5 PC/UVa 题号: 110105/10267 Graphical Editor (图形化编辑器)
1.6 PC/UVa 题号: 110106/10033 Interpreter (解释器)
1.7 PC/UVa 题号: 110107/10196 Check the Check (将军)
1.8 PC/UVa 题号: 110108/10142 Australian Voting (澳大利亚投票)
第二章:数据结构
2.1 PC/UVa 题号: 110201/10038 Jolly Jumpers (快乐的跳跃者)
2.2 PC/UVa 题号: 110202/10315 Poker Hands (扑克牌型)
2.3 PC/UVa 题号: 110203/10050 Hartals (罢工)
2.4 PC/UVa 题号: 110204/843 Crypt Kicker (解密)
2.5 PC/UVa 题号: 110205/10205 Stack ’em Up (完美洗牌术)
2.6 PC/UVa 题号: 110206/10044 Erdos Numbers (Erdos 数)
2.7 PC/UVa 题号: 110207/10258 Contest Scoreboard (比赛计分板)
2.8 PC/UVa 题号: 110208/10149 Yahtzee (Yahtzee 游戏)
第三章:字符串
3.1 PC/UVa 题号: 110301/10082 WERTYU (WERTYU 键盘)
3.2 PC/UVa 题号: 110302/10010 Where’s Waldorf?(寻找单词)
3.3 PC/UVa 题号: 110303/10252 Common Permutation (公共排列)
3.4 PC/UVa 题号: 110304/850 Crypt Kicker II (解密 II)
3.5 PC/UVa 题号: 110305/10188 Automated Judge Script (自动评测脚本)
3.6 PC/UVa 题号: 110306/10132 File Fragmentation (文件碎片)
3.7 PC/UVa 题号: 110307/10150 Doublets (Doublets 序列)
3.8 PC/UVa 题号: 110308/848 Fmt (Fmt 程序)
第四章:排序
4.1 PC/UVa 题号: 110401/10041 Vito’s Family (Vito 家族)
4.2 PC/UVa 题号: 110402/120 Stacks of Flapjacks (煎饼堆)
4.3 PC/UVa 题号: 110403/10037 Bridge (过桥)
4.4 PC/UVa 题号: 110404/10191 Longest Nap (最长打盹时间)
4.5 PC/UVa 题号: 110405/10026 Shoemaker’s Problem (鞋匠的烦恼)
4.6 PC/UVa 题号: 110406/10138 CDVII (CDVII 高速公路)
4.7 PC/UVa 题号: 110407/10152 ShellSort (龟壳排序)
4.8 PC/UVa 题号: 110408/10194 Football (aka Soccer) (足球)
第五章:算术与代数
5.1 PC/UVa 题号: 110501/10035 Primary Arithmetic (小学生算术)
5.2 PC/UVa 题号: 110502/10018 Reverse and Add (反转相加)
5.3 PC/UVa 题号: 110503/701 The Archeologist’s Dilemma (考古学家的烦恼)
5.4 PC/UVa 题号: 110504/10127 Ones (仅由 1 组成的数)
5.5 PC/UVa 题号: 110505/847 A Multiplication Game (乘法游戏)
5.6 PC/UVa 题号: 110506/10105 Polynomial Coefficients (多项式系数)
5.7 PC/UVa 题号: 110507/10077 The Stern-Brocot Number System (Stern-Brocot 代数系统)
5.8 PC/UVa 题号: 110508/10202 Pairsumonious Numbers (两两之和)
第六章:组合数学
6.1 PC/UVa 题号: 110601/10183 How Many Fibs? (斐波那契计数)
6.2 PC/UVa 题号: 110602/10213 How Many Pieces of Land? (土地分割)
6.3 PC/UVa 题号: 110603/10198 Counting (数数)
6.4 PC/UVa 题号: 110604/10157 Expressions (括号表达式)
6.5 PC/UVa 题号: 110605/10247 Complete Tree Labeling (完全树标号)
6.6 PC/UVa 题号: 110606/10254 The Priest Mathematician (牧师数学家)
6.7 PC/UVa 题号: 110607/10049 Self-describing Sequence (自描述序列)
6.8 PC/UVa 题号: 110608/846 Steps (数轴行走)
第七章:数论
7.1 PC/UVa 题号: 110701/10110 Light, More Light (开灯与关灯)
7.2 PC/UVa 题号: 110702/10006 Carmichael Numbers (Carmichael 数)
7.3 PC/UVa 题号: 110703/10104 Euclid Problem (欧几里德问题)
7.4 PC/UVa 题号: 110704/10139 Factovisors (阶乘与整除)
7.5 PC/UVa 题号: 110705/10168 Summation of Four Primes (四素数之和)
7.6 PC/UVa 题号: 110706/10042 Smith Numbers (Smith 数)
7.7 PC/UVa 题号: 110707/10090 Marbles (弹珠)
7.8 PC/UVa 题号: 110708/10089 Repackaging (重新打包)
第八章:回溯法
8.1 PC/UVa 题号: 110801/861 Little Bishops (棋盘上的象)
8.2 PC/UVa 题号: 110802/10181 15-Puzzle Problem (15 数码游戏)
8.3 PC/UVa 题号: 110803/10128 Queue (队伍)
8.4 PC/UVa 题号: 110804/10160 Servicing Stations (服务站)
8.5 PC/UVa 题号: 110805/10032 Tug of War (拔河)
8.6 PC/UVa 题号: 110806/10001 Garden of Eden (伊甸园)
8.7 PC/UVa 题号: 110807/704 Colour Hash (色彩缤纷游戏)
8.8 PC/UVa 题号: 110808/10270 Bigger Square Please... (拼接正方形)
第九章:图遍历
9.1 PC/UVa 题号: 110901/10004 Bicoloring (双着色)
9.2 PC/UVa 题号: 110902/10067 Playing With Wheels (摆弄轮子)
9.3 PC/UVa 题号: 110903/10099 The Tourist Guide (导游)
9.4 PC/UVa 题号: 110904/705 Slash Maze (斜线迷宫)
9.5 PC/UVa 题号: 110905/10029 Edit Step Ladders (递变阶梯)
9.6 PC/UVa 题号: 110906/10051 Tower of Cubes (立方体之塔)
9.7 PC/UVa 题号: 110907/10187 From Dusk till Dawn (从黄昏到拂晓)
9.8 PC/UVa 题号: 110908/10276 Hanoi Tower Troubles Again! (汉诺塔卷土重来!)
第十章:图算法
10.1 PC/UVa 题号: 111001/10034 Freckles (斑点)
10.2 PC/UVa 题号: 111002/10054 The Necklace (项链)
10.3 PC/UVa 题号: 111003/10278 Fire Station (消防站)
10.4 PC/UVa 题号: 111004/10039 Railroads (铁路)
10.5 PC/UVa 题号: 111005/10158 War (战争)
10.6 PC/UVa 题号: 111006/10199 Tourist Guide (导游)
10.7 PC/UVa 题号: 111007/10249 The Grand Dinner (丰盛的晚餐)
10.8 PC/UVa 题号: 111008/10092 The Problem With the Problem Setter (命题者的难题)
第十一章:动态规划
11.1 PC/UVa 题号: 111101/10131 Is Bigger Smarter? (越大越聪明?)
11.2 PC/UVa 题号: 111102/10069 Distinct Subsequences (不同的子序列)
11.3 PC/UVa 题号: 111103/10154 Weights and Measures (重量和力量)
11.4 PC/UVa 题号: 111104/116 Unidirectional TSP (单向旅行商问题)
11.5 PC/UVa 题号: 111105/10003 Cutting Sticks (切割木棍)
11.6 PC/UVa 题号: 111106/10261 Ferry Loading (渡船装载)
11.7 PC/UVa 题号: 111107/10271 Chopsticks (筷子)
11.8 PC/UVa 题号: 111108/10201 Adventures in Moving: Part IV (搬家大冒险:第四部)
第十二章:网格
12.1 PC/UVa 题号: 111201/10161 Ant on a Chessboard (棋盘上的蚂蚁)
12.2 PC/UVa 题号: 111202/10047 The Monocycle(独轮车)
12.3 PC/UVa 题号: 111203/10159 Star (六角星)
12.4 PC/UVa 题号: 111204/10182 Bee Maja (蜜蜂 Maja)
12.5 PC/UVa 题号: 111205/707 Robbery (抢劫)
12.6 PC/UVa 题号: 111206/10177 (2/3/4)-D Sqr/Rects/Cubes/Boxes? (2/3/4-维立方体?)
12.7 PC/UVa 题号: 111207/10233 Dermuba Triangle (Dermuba 三角)
12.8 PC/UVa 题号: 111208/10075 Airlines (航线)
第十三章:几何
13.1 PC/UVa 题号: 111301/10310 Dog and Gopher (狗拿地鼠)
13.2 PC/UVa 题号: 111302/10180 Rope Crisis in Ropeland! (绳子王国的危机!)
13.3 PC/UVa 题号: 111303/10195 The Knights of the Round Table (圆桌骑士)
13.4 PC/UVa 题号: 111304/10136 Chocolate Chip Cookies (巧克力片饼干)
13.5 PC/UVa 题号: 111305/10167 Birthday Cake (生日蛋糕)
13.6 PC/UVa 题号: 111306/10215 The Largest/Smallest Box... (最大/最小的盒子)
13.7 PC/UVa 题号: 111307/10209 Is This Integration? (需要积分吗?)
13.8 PC/UVa 题号: 111308/10012 How Big Is It? (它有多大?)
第十四章:计算几何
14.1 PC/UVa 题号: 111401/10135 Herding Frosh (新生集会)
14.2 PC/UVa 题号: 111402/10245 The Closest Pair Problem (最近点对问题)
14.3 PC/UVa 题号: 111403/10043 Chainsaw Massacre (电锯惊魂)
14.4 PC/UVa 题号: 111404/10084 Hotter Colder (冷热游戏)
14.5 PC/UVa 题号: 111405/10065 Useless Tile Packers (没用的瓷砖打包公司)
14.6 PC/UVa 题号: 111406/849 Radar Tracking (雷达追踪)
14.7 PC/UVa 题号: 111402/10088 Trees on My Island (岛上的树)
14.8 PC/UVa 题号: 111408/10117 Nice Milk (美味的牛奶)
四、USACO http://www.nocow.cn/index.php/USACO_Training (USACO 97道题)
USA Computing Olympiad 是美国高校的信息学测评网站,也是美国中学生的官方竞赛网站。
美国著名在线题库,专门为信息学竞赛选手准备。
全英文界面,但有非官方的中文翻译。推荐直接阅读英语原文,既准确可靠又可提高英语水平。
网站的Training题目全面,每道题附有详细题解,可查看测试数据和运行结果,便于调试、发现错误并改正。采用章节递进的层次结构,由易到难,讲授知识、练习编程结合,题目必须依次完成,避免了只挑简单题做的行为。
1 Chapter1-Getting started(入门) 21道题
1.1 Section 1.0
1.2 Section 1.1
1.3 Section 1.2
1.4 Section 1.3
1.5 Section 1.4
1.6 Section 1.5
2 Chapter2-Bigger Challenges(更大的挑战) 19道题
2.1 Section 2.1
2.2 Section 2.2
2.3 Section 2.3
2.4 Section 2.4
3 Chapter3-Techniques more subtle(更微妙的技术) 21道题
3.1 Section 3.1
3.2 Section 3.2
3.3 Section 3.3
3.4 Section 3.4
4 Chapter4-Advanced algorithms and difficult drills(高级算法与困难的习题) 15道题
4.1 Section 4.1
4.2 Section 4.2
4.3 Section 4.3
4.4 Section 4.4
5 Chapter5-Serious challenges(严峻的挑战) 18道题
5.1 Section 5.1
5.2 Section 5.2
5.3 Section 5.3
5.4 Section 5.4
5.5 Section 5.5
6 Chapter6-Contest Practice(大赛的实践) 3道题
6.1 Section 6.1