[转载]ACM培训计划与我推荐的书籍

ACM培训计划与我推荐的书籍


 

入门三本:
《数据结构与算法》(傅清祥,王晓东编著,我所见过的最好的算法教材)
程序设计导引及在线实践 作者: 李文新
ACM程序设计培训教程 吴昊

基础提高:
算法艺术与信息学竞赛 第二版 刘汝佳
算法设计与分析 王晓东
算法设计与试验题解 王晓东
科曼:《算法导论》
组合数学 第三版 冯舜玺 译
计算几何-算法设计与分析 周培德
国际信息学奥林匹克竞赛指导— — 实用算法的分析与程序设计  吴文虎 王建德

网络算法与复杂性理论 谢政 李建平
《Concrete Mathematics --- A Foundation For Computer Science》 Ronald L. Graham , Donald E. Knuth , Oren Patashnik《具体数学》(能买到中文版最好)
《计算机程序设计艺术》三卷 Knuth
组合数学的算法与程序设计
《程序设计中的组合数学》 吴文虎
图论的算法与程序设计
图、网络与算法

国际大学生程序设计竞赛辅导教程 郭嵩山 崔昊

《ACM国际大学生程序设计竞赛试题与解析》全部册(吴文虎著,清华大学出版社)
C算法.第1卷,基础、数据结构、排序和搜索(第三版)
C算法(第2卷图算法第3版中文版)译者:周良忠 (美国)塞奇威克著
国际大学生程序设计竞赛例题解 四本 郭嵩山


      请所有的新队员认真完成以下各题。如果做题遇到困难,如题意难以理解、不知如何着手或不知错在哪里,不要气馁,可以请教别的队员,也可请教教练。我们会尽力帮助你完成这几组中每一道题。但不要复制别人的程序,即便参考了别人的程序,也要亲自再完成一遍。而且不建议过多参考别人程序,这样会消弱训练的效果,也减少了思考的乐趣。

      有些队员可能觉得某些题太简单,但我们还是建议将它们都做掉。因为题目虽然简单,但是再简单的题目都不能保证一次做对,而做错题的各种原因如题意理解错误,格式错误等你都会碰到。了解这些原因对减少错误率很有好处。

做题前请了解一些规范:

1. main函数应为int型,最后return 0 ,即:

int main()

{

...

   return 0;

}

这样做是因为避免有些编译器报错。

2. 为了便于核对,请在代码开头加上可以表明题目的注释,如:

    //ZJU1001; /*PKU1002 */等

Group 0:热身

再次提醒:做对后别忘提交到训练系统.
编号         来源         题号         标题         评注
        三道都是A+B,而且有样例程序。请自己做一遍,不要拷。
0.1         ZJU         1001         A+B Problem
0.2         PKU         1000         A+B Problem
0.3         TOJ         1000         熟悉一下Online Judge的环境

Group 1:起步

Group 2:英文题(1)

     以下是ZJU上的题目,ZJU的题都是英文的,有些题难度可能不比上面一组高。但对新队员来说,理解题意本身可能是个难点。
编号         来源         题号         标题         评注
2.1         ZJU         1048         Financial Management
        只比A+B难一点
2.2         ZJU         1045         HangOver         这一道和下面两道都是简单的计算
2.3         ZJU         1049         I Think I need I boat         
2.4         ZJU         1813         Biker's Trip Odometer         
2.5         ZJU         1057         Undercut         
2.6         ZJU         1113         u Calculate e         没有输入,但要注意格式
2.7         ZJU         1151         Word Reversal         简单的字符串处理
2.8         ZJU         1195         Blowing Fuses         别看题有些长,但其实很简单
2.9         ZJU         1755         Clay Bully         
2.10         ZJU         1760         Doubles         

Group 3:英文题(2)

    下面这些题可能稍微难一些,但与上面一组难度上并没有本质区别。只要仔细想想,应当不难做出。
编号         来源         题号         标题         评注
3.1         ZJU         1489         2^x mod n = 1         
3.2         ZJU         1712         Skew Binary         
3.3         ZJU         1016         Parencodings         
3.4         ZJU         1350         The Drunk Jailer         
3.5         ZJU         1051         A New Growth Industry         这三题可能比较繁琐,做的时候要仔细
3.6         ZJU         1178         Booklet PrintingBook
3.7         ZJU         1078         Palindrom Numbers

Group 4:TOJ前20题中剩余题
Group 5:基础题继续练习

再补充一些适于基本功练习的题目,供大家继续打好C(C++)与语言基础。

有些题目需要一些数学推算,但都不会超出你们的知识范围。
编号         来源         题号         标题         评注
5.1         ZJU         1763         A Simple Question of Chemistry         极简单
5.2         ZJU         1915         Above Average
        极简单
5.3         ZJU         2104         Let the Balloon Rise         极简单
5.4         ZJU         2201         No Brainer         极简单
5.5         ZJU         2208         To and Fro         极简单,只要读懂题
5.6         ZJU         1797         Least Common Multiple
        想一想如何有效率地求最大公约数和最小公倍数
5.7         ZJU         1629         Counting Triangles         
5.8         ZJU         2015         Number Sequence         注意数列的周期性
5.9         ZJU         1657         Goldbach's Conjecture         
5.10         ZJU         1871         Steps         
5.11         ZJU         1858         Soundex        
5.12         ZJU         1622         Switch         
5.13         ZJU         1160         Biorhythms         
5.14         TOJ         1022         数制转换         要注意如何读入数据
5.15         TOJ         1010         数素数
        注意质数判定的效率

Group 6 高精度运算练习

高精度运算也是基本功之一。

以下各题都牵涉到高精度运算,许多涉及数制转换。但也需注意其它方面。

做题时注意模块化。做完这些题后,你会发现很多功能可以重用。
6.1         ZJU         1272         Numerically Speaking         有样例程序
6.2         ZJU         1292         Integer Inquiry         高精度加法
6.3         ZJU         1205         Martian Addition
        高精度加法,但不是十进制
6.4         ZJU         1073         Round and Round We Go         高精度乘法
6.5         ZJU         1086         Octal Fractions         高精和数制转换
6.6         ZJU         1154         Niven Numbers
        高精和数制转换,注意,长度题目中未明确给定。如果设固定长数组,先设50.如果运行时溢出再往上加。
6.7         ZJU         1210         Reciprocals         高精度除法,同时注意输出格式要求
6.8         ZJU         1962         How Many Fibs?
        高精度加法,以及比较
6.9         ZJU         2017         Simple Arithmetics         涉高精加,减,乘,且格式处理较繁
6.10         ZJU         2241         Fractran         表示一个大数不仅可以用各位数,也可以用它的各因子。这题就是一

Group 6: 模拟类题目专项练习

所谓模拟类题目,就是那些题目详细描述了完成某一过程的步骤,你只须严格按照要求模拟这一过程即可。

这类题目通常不需要很复杂的算法设计,但有些题十分繁琐,稍不小心就会出错。另外,对题意的准确把握也是关键,特别是这些步骤的细节方面,一定要完全搞清楚,不能自己乱猜。

下面的一些模拟类题目都是比较繁琐的,大家做它们时一定要细心,且有足够的耐心。


编号         来源         题号         标题         评注
6.1         ZJU         1072         Microprocessor Simulation         
6.2         ZJU         1208         Roll the Die!         
6.3         ZJU         1710         The Snail         
6.4         ZJU         1723         Board Silly         
6.5         ZJU         1737         Unreliable Message
        
6.6         ZJU         1824         Maze Traversal         
6.7         ZJU         1834         AutoFish
        
6.8         ZJU         1862         Mine Sweeper
        
6.9         ZJU         2240         Run Length Encoding


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
被毁坏的玉米地 ACM程序设计培训教程 经典数据结构算法……………………………………………………………1   1.1 线性表………………………………………………………………………………1   1.1.1 线性表的顺序存储结构……………………………………………………1   1.1.2 插入操作……………………………………………………………………2   1.1.3 删除操作……………………………………………………………………2   1.1.4 线性表的链式存储…………………………………………………………2   1.1.5 单链表………………………………………………………………………2   1.1.6 单链表的插入操作…………………………………………………………3   1.1.7 单链表的删除操作…………………………………………………………3   1.1.8 循环链表……………………………………………………………………4   1.1.9 双向链表……………………………………………………………………5   1.1.10 双向链表的插入操作………………………………………………………5   1.1.11 双向链表的删除操作………………………………………………………5   1.1.12 静态链表……………………………………………………………………5   1.2 栈………………………………………………………………………………………………5   1.2.1 顺序栈……………………………………一…………………………………6   1.2.2 链栈……………………………………………………………………………………………………9   l.3 队列…………………………………………………………………………………………10   1.3.1 链队列………………………………………………………………………10   1.3.2 循环队列……………………………………………………………………12   1.4 串的定义……………………………………………………………………………13   1.5 抽象数据类型串的实现……………………………………………………………14   1.5.1 定长顺序串…………………………………………………………………14   1.5.2 堆串………………………………………………………………………………18   1.5.3 块链串………………………………………………………………………24   1.6 查找的基本概念……………………………………………………………………24   1.6.1 顺序查找法…………………………………………………………………25   1.6.2 折半查找法…………………………………………………………………26   1.6.3 分块查找法…………………………………………………………………27   1.6.4 基于树的查找法……………………………………………………………28   1.6.5 计算式查找法——哈希法…………………………………………………28   1.7 排序的基本概念……………………………………………………………………33   1.7.1 插入类排序…………………………………………………………………34   1.7.2 直接插入排序………………………………………………………………34   1.7.3 折半插入排序………………………………………………………………35   1.7.4 表插入排序…………………………………………………………………36   1.7.5 冒泡排序……………………………………………………………………39   1.7.6 快速排序……………………………………………………………………40   1.8 分配类排序…………………………………………………………………………41   1.8.1 多关键字排序………………………………………………………………42   1.8.2 链式基数排序………………………………………………………………42   1.8.3 基数排序的顺序表结构……………………………………………………45   1.8.4 各种排序方法的综合比较…………………………………………………46   第2章 蛮力法………………………………………………………………………47   2.1搜索所有的解空间…………………………………………………………………47   〖案例l〗假金币…………………………………………………………………47   〖案例2〗现在的时间是多少……………………………………………………49   2.2 搜索所有的路径……………………………………………………………………52   〖案例3〗矩阵……………………………………………………………………52   2.3 直接计算……………………………………………………………………………54   〖案例4〗数的长度………………………………………………………………54   2.4 模拟与仿真…………………………………………………………………………56   〖案例5〗冲撞的机器人…………………………………………………………56   第3章 贪心算法………………………………………………………………………61   3.1 构造法………………………………………………………………………………61   〖案例1〗订票……………………………………………………………………6I   3.2 反证法………………………………………………………………………………67   〖案例2〗电梯……………………………………………………………………68   3.3 调整法………………………………………………………………………………70   〖案例3〗水位……………………………………………………………………70   〖案例4〗埃及分数………………………………………………………………73   〖案例5〗数划分的研究…………………………………………………………74   第4章 背包问题………………………………………………………………………78   4.1 用贪心法解决背包问题……………………………………………………………78   〖案例1〗最佳装载………………………………………………………………78   4.2 回溯法解决背包问题………………………………………………………………81   〖案例2〗0/1背包…………………………………………………………………81   4.3 遗传算法解决背包问题……………………………………………………………86   〖案例3〗0/1背包……………………………………………………………86   4.4 动态规划解决背包问题……………………………………………………………94   〖案例4〗适配背包………………………………………………………………94   第5章回溯法………………………………………………………………………97   5.1 组合与数的问题……………………………………………………………………97   〖案例l〗组合问题………………………………………………………………97   〖案例2〗数的划分………………………………………………………………99   5.2 回溯法与搜索……………………………………………………………………101   〖案例3〗素数填表问题…………………………………………………………101   〖案例4〗八皇后问题……………………………………………………………105   第6章 动态规划……………………………………………………………………109   6.1 最优子结构………………………………………………………………………1 1 1   〖案例1〗拦截导弹………………………………………………………………1ll   6.2 应用动态规划的步骤……………………………………………………………113   〖案例2〗公共子序列……………………………………………………………113   〖案例3〗Uxuhul的表决…………………………………………………………115   第7章 DFS与BFS以及剪枝问题……………………………………………………119   7.1 深度优先遍历……………………………………………………………………119   〖案例l〗15数码难题……………………………………………………………120   〖案例2〗三角形大战……………………………………………………………121   7.2 宽度优先遍历……………………………………………………………………122   〖案例3〗蛇和梯子………………………………………………………………123   7.3 剪枝方法…………………………………………………………………………127   第8章 线性规划和整数规划…………………………………………………………129   8.1 简单线性规划……………………………………………………………………129   〖案例l〗炼金术…………………………………………………………………129   8.2 整数规划…………………………………………………………………………134   〖案例2〗装箱问题………………………………………………………………134   第9章 最小生成树…………………………………………………………………139   9.1 Prim算法…………………………………………………………………………………………………140   9.2 Kruskal算法………………………………………………………………………………………………143   9.3 Sollin算法…………………………………………………………………………………………………145   第10章 大数问题……………………………………………………………………146   10.1 大数的加减………………………………………………………………………146   〖案例1〗整数探究………………………………………………………………146   10.2 大数的乘积……………………………………………………………………148   〖案例2〗相连游戏………………………………………………………………148   〖案例3〗公牛的数学……………………………………………………………150   10.3 用FFT作大数乘法………………………………………………………………151   〖案例4〗X问题…………………………………………………………………152   10.4 任意精度计算……………………………………………………………………155   〖案例5〗幂……………………………………………………………………155   10.5 大数的除法………………………………………………………………………157   第11章 计算几何学…………………………………………………………………158   11.1 判断点是否在多边形中…………………………………………………………158   11.2 判断线段是否在多边形内………………………………………………………159   11.3 计算几何典型算法………………………………………………………………160   〖案例1〗计算周长问题…………………………………………………………161   〖案例2〗正方形问题……………………………………………………………162   〖案例3〗计算平面点集凸壳的算法……………………………………………163   第12章 着色问题与排队论……………………………………………………………167   12.1 着色问题…………………………………………………………………………168   12.1.1 顶点着色问题……………………………………………………………168   12.1.2 边着色问题………………………………………………………………177   12.2 排队论……………………………………………………………………………………………………179   第13章 组合数学……………………………………………………………………188   13.1 鸽巢原理…………………………………………………………………………188   13.2 容斥原理…………………………………………………………………………190   〖案例1〗棋盘覆盖问题…………………………………………………………192   〖案例2〗被毁坏的玉米地(Crop Circles)问题………………………………193   13.3 递推关系…………………………………………………………………………197   〖案例3〗Josephus问题…………………………………………………………197   〖案例4〗假币问题………………………………………………………………199   13.4 发生函数…………………………………………………………………………202   13.5 Polya定理………………………………………………………………………………………………204   第14章 概率论…………………………………………………………………………206   14.1 基本概念…………………………………………………………………………206   14.2 基本概率算法……………………………………………………………………208   〖案例1〗快速排序………………………………………………………………209   〖案例2〗八皇后问题……………………………………………………………210   14.3 蒙特卡罗(Monte Carlo)型概率算法…………………………………………214   第15章 凸包问题……………………………………………………………………217   15.1 穷举法解决凸包问题……………………………………………………………217   15.2 格雷厄姆扫描法解决凸包问题…………………………………………………218   15.3 分治法解决凸包问题……………………………………………………………220   15.4 蛮力法解决凸包问题……………………………………………………………222   15.5 Jarris步进法解决凸包问题………………………………………………………224   15.6 应用…………………………………………………………………………………………………………227   〖案例l〗果园篱笆………………………………………………………………227   〖案例2〗巨人和鬼………………………………………………………………232   第16章 数论问题……………………………………………………………………236   16.1 数的幂运算………………………………………………………………………236   〖案例l〗高级模运算……………………………………………………………236   16.2 欧拉定理的应用…………………………………………………………………238   〖案例2〗快乐2004……………………………………………………………239   〖案例3〗2x mod n=1……………………………………………………………240   16.3 素数测试…………………………………………………………………………243   〖案例4〗素数距离………………………………………………………………243   〖案例5〗素数测试………………………………………………………………246   16.4 Pell方程…………………………………………………………………………………………………250   〖案例6〗Smith问题……………………………………………………………250   附录A 排课时间表问题源代码………………………………………………………258   参考文献………………………………………………………………………………269

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值