现在的位置: 首页 > 综合 > 正文

ACM-必备知识点

2013年10月19日 ⁄ 综合 ⁄ 共 5736字 ⁄ 字号 评论关闭
时间复杂度渐近时间复杂度的严格定义NP问题时间复杂度的分析方法,主定理)
排序算法(平方排序算法的应用,Shell排序快速排序归并排序时间复杂度下界,三种线性时间排  ,外部排序)
数论整除集合论关系素数进位制辗转相除扩展的辗转相除同余运算解线性同余方程中国剩余定理
指针链表,搜索判重,邻接表开散列二叉树的表示,多叉树的表示)
按位运算andorxorshlshr一些应用
图论(图论模型的建立,平面图,欧拉公式与五色定理求强连通分量,求割点和桥,欧拉回路AOV问题AOE问题最小生成树的三种算法最短路的三种算法,标号法,差分约束系统,验证二分图Konig定理匈牙利算法,KM算法,稳定婚姻系统最大流算法最小割最大流定理,最小费用最大流算法)
计算几何平面解几及其应用向量点积及其应用叉积及其应用,半平面相交,求点集的凸包,最近点对问题,凸多边形的交,离散化与扫描
数据结构广度优先搜索验证括号匹配表达式计算递归的编译Hash表,分段Hash,并查集Tarjan算法二叉堆,左偏树,二斜堆,二项堆,二叉查找树,红黑树,AVL平衡树,Treap,Splay,静态二叉查找树,2-d树,线段树,二维线段树,矩形树,Trie树,块状链表)
组合数学排列与组合鸽笼原理容斥原理递推Fibonacci数列Catalan数列Stirling数差分序列生成函数置换Polya原理
概率论简单概率条件概率Bayes定理期望值
矩阵(矩阵的概念和运算,二分求解线性递推方程,多米诺骨牌棋盘覆盖方案数,高斯消元)
字符串处理KMP后缀树,有限状态自动机,Huffman编码简单密码学
数论单调队列,凸完全单调性,树型动规,多叉转二叉,状态压缩类动规,四边形不等式)
博奕论Nim取子游戏,博弈树,Shannon开关游戏
搜索(A*,ID,IDA*,随机调整,遗传算法)
微积分初步极限思想导数积分定积分立体解析几何
书籍推荐:

入门三本:
《数据结构与算法》(傅清祥,王晓东编著,我所见过的最好的算法教材)
程序设计导引及在线实践 作者: 李文新
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; 等

 

 

Group 0:热身

再次提醒:做对后别忘提交到训练系统.
编号         来源         题号         标题         评注
        三道都是A+B,而且有样例程序。请自己做一遍,不要拷。
0.1         ZJU         1001         A+
Problem
0.2         PKU         1000         A+
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
         Think need boat          
2.4         ZJU         1813         Biker'Trip Odometer          

2.5         ZJU         1057         Undercut          
2.6         ZJU         1113
         Calculate         没有输入,但要注意格式
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 1          
3.2         ZJU         1712
         Skew Binary          
3.3         ZJU         1016
         Parencodings          
3.4         ZJU         1350
         The Drunk Jailer          
3.5         ZJU         1051
         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         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'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    

抱歉!评论已关闭.