您的位置:首页 > 其它

ACM-必备知识点

2014-05-07 14:09 141 查看
转自:/article/1597229.html

时间复杂度渐近时间复杂度的严格定义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+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

[align=left]Group 4:TOJ前20题中剩余题 [/align]

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

Group 7: 新一组练习

这一组题目较综合,难度不一。(题目下载)

编号 来源 题号 标题 评注

7.1 ZJU 1068 P,MTHBGWB

7.2 ZJU 1146 LC-Display

7.3 ZJU 1243 URLs

7.4 ZJU 1115 Digital Roots

7.5 ZJU 1180 Self Numbers

7.6 ZJU 1337 Pi

7.7 ZJU 1312 Prime Cuts

7.8 ZJU 1326 M*A*S*H

建议用链表做

7.9 ZJU 1494 Climbing Worm

7.10 ZJU 1577 GCD & LCM

7.11 ZJU 2122 A Flea on a Chessboard

7.12 ZJU 1628 Diamond

7.13 ZJU 1630 Die

7.14 ZJU 1517 Grandpa's Rubik Cube

7.15 ZJU 1161 Gone Fishing (新加)贪心经典,可以后再做

Group 8: 字符串处理

编号 来源 题号 标题 评注

8.1 ZJU 1099 HTML

8.2 ZJU 1318 Table 样例数据

8.3 ZJU 1116 A Well-Formed Problem

8.4 ZJU 1324 Unix ls 用C语言的用scanf读数据

8.5 ZJU 1295 Reverse Text

8.6 ZJU 1392 The Hardest Problem Ever

8.7 ZJU 1325 Palindromes

8.8 ZJU 1404 Oil Pipeline

8.9 ZJU 1884 WERTYU

Group 9:

编号 来源 题号 标题 评注

9.1 ZJU 2388 Beat the Spread!

9.2 ZJU 2376 Ants 努力得猜吧

9.3 ZJU 2358 Sum of Factorials 注意0的阶乘

9.4 ZJU 2345 Gold Coins

9.5 ZJU 2321 Filling Out the Team

9.6 ZJU 2397 Tian Ji -- The Horse Racing 经典贪心

9.7 ZJU 2316 Matrix Multiplication 线性代数,加组合数学

9.8 ZJU 2301 Color the Ball 离散化坐标

9.9 ZJU 2330 A^B == B^A? 高数题

9.10 ZJU 2329 AB Circle

9.11 ZJU 2313 Chinese Girls' Amusement

Group 10:

这组题据金强说是简单题。

编号 来源 题号 标题 评注

10.1 ZJU 2417 Lowest Bit

10.2 ZJU 2405 Specialized Four-Digit Numbers

10.3 ZJU 2481 Unique Ascending Array

10.4 ZJU 2478 Encoding

10.5 ZJU 2421 Recaman's Sequence

10.6 ZJU 2416 Open the Lock

10.7 ZJU 2482 IP Address

10.8 ZJU 2401 Zipper

10.9 ZJU 2480 Simplest Task in Windows

10.10 ZJU 2478 Total Amount

10.11 ZJU 2256 Mincost 贪心

10.12 ZJU 2258 Number Sequence II 构造

专题1:递归运用初步

对递归的介绍,请看这里。

递归的应用总是和深度优先搜索联系到一起。这里先请看两篇有关的文章,一篇中文的,一篇英文的。

看了这两篇文章,应当对深度优先的基本概念有些了解。请结合样例程序仔细体会8皇后问题的解法。这是很经典的深度优先搜索问题。

以下是一些问题的样例程序:

整数拆分

组合问题

全排列

八皇后问题

理解这些程序若有困难,我们会详细讲解它们。理解后,请自己再编一遍。

下面是一些有关它们的练习。

关于这方面的题目很多,我们会不断添加。

Group Z1:递归和深度优先搜索初步

Group 11: 搜索初步

深度优先搜索和广度优先搜索是属于常用的搜索技术。前者用到递归,后者涉及队列。

深度优先搜索对于解决某些问题并不一定是最好的,但很容易实现,有时也十分有效,它的难点在于如何剪枝优化。出现在递归初步中的题目可以算是深搜的一种。

广度优先搜索技术的结构相对固定,但节点的判重也是个难点。由于时间效率的原因,广度优先搜索运用得更为广泛。

下面是关于它们的一些练习。

编号 来源 题号 标题

11.0 ZJU 2416 Open the Lock

广度优先。(样例程序)

11.1 ZJU 1091 Knight Moves 最简单的广度优先搜索问题,但包括了这类方法的所有要素。

11.2 ZJU 1005 Jugs 典型的广度优先

11.3 ZJU 1649 Rescue 广度优先在迷宫问题中的应用

11.4 ZJU 1002 Fire Net 这些都是可以运用深度优先的题目。有些需要很好的剪枝。

11.5 ZJU 1003 Crashing Balloon

11.6 ZJU 1004 Anagrams by Stack

Group 12: 深度优先搜索

下面是关于深度优先搜索(DFS)的一些练习。

编号 来源 题号 标题

12.0 PKU 1256 Anagram

生成不重复排列

12.1 ZJU 1711 Sum It Up 生成不重复组合

12.2 ZJU 2412 Farm Irrigation 初步,有的需要剪枝

12.3 ZJU 1694 Shredding Company

12.4 ZJU 1457 Prime Ring Problem

12.5 ZJU 1204 Additive equations

12.6 ZJU 2192 T-shirt Gumbo 进阶,有序搜索与剪枝

12.7 ZJU 1909 Square

12.8 ZJU 1987 Vase Collection

12.9 ZJU 1937 Addition Chains

12.10 ZJU 1984 Genetic Code

12.11 ZJU 2110 Tempter of the Bone

12.12 ZJU 1179 Finding Rectangles 难题,需要很好搜索策略和剪枝技巧

12.13 ZJU 1411 Anniversary

12.14 ZJU 1008 Gnome Tetravex

12.15 ZJU 1499 Increasing Sequences

分享到:

Group 13: 广度优先搜索

下面是关于广度优先搜索(BFS)的一些练习。

编号 来源 题号 标题

13.0 ZJU 1438 Asteroids! 三维迷宫,想想如何控制方向

13.1 ZJU 2050 Flip Game 可以尝试一下位运算

13.2 ZJU 2081 Mission Impossible 可以用BFS+DFS

13.3 ZJU 1310 Robot 进阶,稍难一点

13.4 ZJU 1671 Walking Ant

13.5 ZJU 1940

Dungeon Master

13.6 ZJU 1103 Hike on a Graph

13.7 ZJU 1358 Moving Object Recognition

13.8 ZJU 1217 Eight 难题,注意状态的表示与哈希

13.9 ZJU 1227 Free Candies

13.10 ZJU 1505 Solitaire

13.11 ZJU 1361 Holedox Movi

Group 14: 图--遍历(Graph Traversal)、传递闭包(Transitive Closure)

编号 来源 题号 标题

14.0 ZJU 1221 Risk 用BFS也可以解决最短路径问题

14.1 ZJU 2165 Red and Black 基于网格的连通性分析

14.2 ZJU 1589 Professor John 传递闭包,也可以用DFS

14.3 ZJU 1085 Alien Security
Group 15: 图--拓扑排序(Topological Sort)、关节点(Articulation Point)

编号 来源 题号 标题

15.0 ZJU 1060 Sorting It All Out

15.1 ZJU 1119 SPF

15.2 ZJU 1311 Network
Group 16: 图--最小生成树(Minimum Spanning Tree)

编号 来源 题号 标题

16.0 ZJU 1406 Jungle Roads

16.1 ZJU 1203 Swordfish

16.2 ZJU 1542 Network

16.3 ZJU 1586 QS Network 要注意节点权值

16.4 ZJU 1372 Networking 要注意重复边

16.5 ZJU 1914 Arctic Network 想想为什么可以用最小生成树?

16.6 ZJU 2158 Truck History 想想如何转化为最小生成树?

16.7 ZJU 2048 High Ways 基于连通分量的最小生成树

16.8 ZJU 1718 Building a Space Station

16.9 PKU 1258 Agri-Net
Group 17: 图--最短路径(Shortest Path)

编号 来源 题号 标题

17.0 ZJU 1053 FDNY to the Rescue!

17.1 ZJU 1609 Equivalence

17.2 ZJU 1082 Stockbroker Grapevine

17.3 ZJU 1655 Transport Goods 边权值有些特别

17.4 ZJU 1092 Arbitrage

17.5 ZJU 1967 Fiber Network 想想如何利用Floyd三重循环?

17.6 ZJU 1456 Minimum Transport Cost 有些难度的最短路径题

17.7 ZJU 2008 Invitation Cards 带最小堆的Dijkstra

17.8 ZJU 1765 Which Way Do I Go? 综合题,比较复杂

17.9 ZJU 1232 Adventure of Super Mario
Group 18: 图--回路问题(Euler Path & Hamilton Tour)

编号 来源 题号 标题

18.0 ZJU 1105 FatMouse's Tour

18.1 ZJU 2016 Play on Words 可转化为判定欧拉路的存在性

18.2 ZJU 1130 Ouroboros Snake 可以转化为欧拉路

18.3 SCU 1286 First Love 可以转化为欧拉路
Group 19: 图--二部图匹配(Bipartite Matching)

编号 来源 题号 标题

19.0 ZJU 1140 Courses

19.1 ZJU 1137 Girls and Boys

19.2 ZJU 1157 A Plug for UNIX

19.3 ZJU 1364 Machine Schedule

19.4 ZJU 1197 Sorting Slides

19.5 ZJU 1525 Air Raid

19.6 ZJU 1059 What's In a Name

19.7 ZJU 1516 Uncle Tom's Inherited Land

19.8 ZJU 1654 Place the Robots

19.9 ZJU 1509 Family
Group 20: 图--网络流(Network Flow)

编号 来源 题号 标题

20.0 PKU 1273 Drainage Ditches 典型的网络最大流

20.1 ZJU 1734 Power Network 可转化为网络最大流

Group 21: 图--差分约束(Difference Constraint

编号 来源 题号 标题

21.0 ZJU 1260 King

21.1 ZJU 1420 Cashier Employment

21.2 ZJU 1455 Schedule Problem

21.3 ZJU 1508 Intervals

Group 22: 图--其它

编号 来源 题号 标题

22.0 ZJU 1015 Fishing Net 弦图判定

22.1 ZJU 1492 Maximum Clique

求最大团,经典NP hard

22.2 ZJU 1576 Marriage is Stable 稳定婚姻,延迟认可算法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: