下面给个计划你练练:
第一阶段:练经典常用算法,下面的每个算法给我打上十到二十遍,同时自己精简代码,因为太常用,所以要练到写时不用想,10-15分钟内打完,甚至关掉显示器都可以把程序打出来。
1.最短路(Floyd、Dijstra,BellmanFord)
2.最小生成树(先写个prim,kruscal要用并查集,不好写)
3.大数(高精度)加减乘除
4.二分查找. (代码可在五行以内)
5.叉乘、判线段相交、然后写个凸包.
6.BFS、DFS,同时熟练hash表(要熟,要灵活,代码要简)
7.数学上的有:辗转相除(两行内),线段交点、多角形面积公式.
8. 调用系统的qsort, 技巧很多,慢慢掌握.
9. 任意进制间的转换
第二阶段:练习复杂一点,但也较常用的算法。
如:
1. 二分图匹配(匈牙利),最小路径覆盖
2. 网络流,最小费用流。
3. 线段树.
4. 并查集。
5. 熟悉动态规划的各个典型:LCS、最长递增子串、三角剖分、记忆化dp
6.博弈类算法。博弈树,二进制法等。
7.最大团,最大独立集。
8.判断点在多边形内。
9. 差分约束系统.
10. 双向广度搜索、A*算法,最小耗散优先.
第三阶段:
前两个阶段是打基础,第三阶段是锻炼在比赛中可以快速建立模型、想新算法。这就要平时多做做综合的题型了。
1. 把oibh上的论文看看(大概几百篇的,我只看了一点点,呵呵)。
2. 平时扫扫zoj上的难题啦,别老做那些不用想的题.(中大acm的版主经常说我挑简单的来做:-P )
3. 多参加网上的比赛,感受一下比赛的气氛,评估自己的实力.
4. 一道题不要过了就算,问一下人,有更好的算法也打一下。
5. 做过的题要记好 :-)
下面转自:http://hi.baidu.com/wilworld/blog/item/88b1b844d37e4049500ffe6a.html
ACMer必备知识(任重而道远......)
图论
路径问题
0/1边权最短路径
BFS
非负边权最短路径(Dijkstra)
可以用Dijkstra解决问题的特征
负边权最短路径
Bellman-Ford
Bellman-Ford的Yen-氏优化
差分约束系统
Floyd
广义路径问题
传递闭包
极小极大距离 / 极大极小距离
Euler Path / Tour
圈套圈算法
混合图的 Euler Path / Tour
Hamilton Path / Tour
特殊图的Hamilton Path / Tour 构造
生成树问题
最小生成树
第k小生成树
最优比率生成树
0/1分数规划
度限制生成树
连通性问题
强大的DFS算法
无向图连通性
割点
割边
二连通分支
有向图连通性
强连通分支
2-SAT
最小点基
有向无环图
拓扑排序
有向无环图与动态规划的关系
二分图匹配问题
一般图问题与二分图问题的转换思路
最大匹配
有向图的最小路径覆盖
0 / 1矩阵的最小覆盖
完备匹配
最优匹配
稳定婚姻
网络流问题
网络流模型的简单特征和与线性规划的关系
最大流最小割定理
最大流问题
有上下界的最大流问题
循环流
最小费用最大流 / 最大费用最大流
弦图的性质和判定
组合数学
解决组合数学问题时常用的思想
逼近
递推 / 动态规划
概率问题
Polya定理
计算几何 / 解析几何
计算几何的核心:叉积 / 面积
解析几何的主力:复数
基本形
点
直线,线段
多边形
凸多边形 / 凸包
凸包算法的引进,卷包裹法
Graham扫描法
水平序的引进,共线凸包的补丁
完美凸包算法
相关判定
两直线相交
两线段相交
点在任意多边形内的判定
点在凸多边形内的判定
经典问题
最小外接圆
近似O(n)的最小外接圆算法
点集直径
旋转卡壳,对踵点
多边形的三角剖分
数学 / 数论
最大公约数
Euclid算法
扩展的Euclid算法
同余方程 / 二元一次不定方程
同余方程组
线性方程组
高斯消元法
解mod 2域上的线性方程组
整系数方程组的精确解法
矩阵
行列式的计算
利用矩阵乘法快速计算递推关系
分数
分数树
连分数逼近
数论计算
求N的约数个数
求phi(N)
求约数和
快速数论变换
……
素数问题
概率判素算法
概率因子分解
数据结构
组织结构
二叉堆
左偏树
二项树
胜者树
跳跃表
样式图标
斜堆
reap
统计结构
树状数组
虚二叉树
线段树
矩形面积并
圆形面积并
关系结构
Hash表
并查集
路径压缩思想的应用
STL中的数据结构
vector
deque
set / map
动态规划 / 记忆化搜索
动态规划和记忆化搜索在思考方式上的区别
最长子序列系列问题
最长不下降子序列
最长公共子序列
最长公共不下降子序列
一类NP问题的动态规划解法
树型动态规划
背包问题
动态规划的优化
四边形不等式
函数的凸凹性
状态设计
规划方向
线性规划
常用思想
二分
最小表示法
串
KMP
Trie结构
后缀树/后缀数组
LCA/RMQ
有限状态自动机理论
排序
选择/冒泡
快速排序
堆排序
归并排序
基数排序
拓扑排序
排序网络
额。。你还没有学过C就要参加ACM啦?没事,慢慢来~俺大学期间参加过acm,只拿过一个铜牌。就谈谈我的经验吧~
学编程语言,无非看书+实践。
学习c语言,国内入门的就是谭浩强的书绿皮书啦~好好学学。如果对国内的书无好感,可以看看c primer plus。如果要学的更全面,就一定要看Brian W.Kernighan和Dennis M.Ritchie写的C程序设计语言。
以上是语言部分。但是要玩ACM,这还远远不够。
大学期间计算机专业都会学数据结构和算法设计两门课程,这些课程至关重要。所以,如果你要精进自己的算法能力,这两门必须学好。同样推荐几本书,国内的严蔚敏的数据结构和王晓东的计算机算法设计与分析。国外的Mark Allen Weiss的数据结构与算法分析:C语言描述和著名的MIT的算法导论。注意,老外的书更全面复杂,无论是初学阶段,还是后来的能力提升,都会有帮助!入门的话还是国内的啦~
以上内容学好只是表明你的理论基础过关。更重要的就是编码能力了。ACM是理论和实践的结合。在实际编程中会有很多小技巧和规律,这个就要靠你自己摸索了。当然,针对具体的acm比赛方面的书,无论是ACM规则,编码调试技巧还是算法理论,国内也有不少好的,比如刘汝佳的书就非常值得一看。推荐刘汝佳的黑书《算法艺术与信息学竞赛 》(后期看)和他的《算法艺术与信息学竞赛•算法竞赛入门经典》(前期可看)
此外,一定要多多练习,各大OJ,包括ZOJ,POJ等等,都是练习的去处。一定要勤刷题啊~不懂就问,上网多搜索,几乎所有的题目都会有人给出解答的~
最后,参加ACM是件很苦的事情。除了训练,到后期,你得学会合作,毕竟ACM是三人组队参加。要找到自己擅长的领域,一个人很少可能是ACM全能王,你是擅长搜索,还是动态规划,自己要非常清楚。另外,数学理论也要加强!具体数学,离散数学,组合数学,根据你在队伍中角色和职能的定位有目的的精进自己的数学理论~
以上说的顺序不并不是固定的。比如学完c语言后就可在OJ上刷刷水题了~之后可以一边学算法,一边学数据结构,一边上OJ做题啦~
说了这么多,最后说一句,欢迎加入ACM!
备战ACM资料一:知识点
数据结构:
1,单,双链表及循环链表
2,树的表示与存储,二叉树(概念,遍历)二叉树的
应用(二叉排序树,判定树,博弈树,解答树等)
3,文件 *** 作(从文本文件中读入数据并输出到文本文
件中)
4,图(基本概念,存储结构,图的运算)
数学知识
1,离散数学知识的应用(如排列组合、简单的图论,数
理逻辑)
2,数论知识
3,线性代数
4,组合代数
5,计算几何
二 算法
1,排序算法(冒抛法,插入排序,合并排序,快速排
序,堆排序)
2,查找(顺序查找,二分发)
3,回溯算法
4,递归算法
5,分治算法
6,模拟法
7,贪心法
8,简单搜索算法(深度优先,广度优先),搜索中的
剪枝,A*算法
9,动态规划的思想及基本算法
10,高精度运算
三、ACM竞赛的题型分析
竞赛的程序设计一般只有16种类型,它们分别是:
Dynamic Programming (动态规划)
Greedy (贪心算法)
Complete Search (穷举搜索)
Flood Fill (不知该如何翻译)
Shortest Path (最短路径)
Recursive Search Techniques (回溯搜索技术)
Minimum Spanning Tree (最小生成树)
Knapsack (背包问题)
Computational Geometry (计算几何学)
Network Flow (网络流)
Eulerian Path (欧拉回路)
Two-Dimensional Convex Hull (不知如何翻译)
BigNums (大数问题)
Heuristic Search (启发式搜索)
Approximate Search (近似搜索)
Ad Hoc Problems (杂题)
四 ACM竞赛参考书
《实用算法的分析与程序设计》 (吴文虎,王建德著,电子工业出版社,竞赛类的黑宝书)
《青少年国际和全国信息学(计算机)奥林匹克竞赛指导)――组合数学的算法
和程序设计》(吴文虎,王建德著,清华大学出版社,参加竞赛组合数学必学)
《计算机算法设计与分析》 (王晓东编著,最好的数据结构教材)
《数据结构与算法》 (傅清祥,王晓东编著,我所见过的最好的算法教材)
《信息学奥林匹克竞赛指导――1997-1998竞赛试题解析》(吴文虎,王建德著,清华大学出版社)
《计算机程序设计技巧》D.E.Kruth著,算法书中最著名的《葵花宝典》,大师的作品,难度大)
《计算几何》周陪德著
《ACM国际大学生程序设计竞赛试题与解析(一)》 (吴文虎著,清华大学出版社)
《数学建模竞赛培训教材》 共三本 叶其孝主编
《数学模型》第二版 姜启源
《随机规划》
《模糊数学》
《数学建模入门》徐全智
《计算机算法设计与分析》 国防科大
五 常见的几个网上题库
常用网站:
1)信息学初学者之家:
(2)大榕树编程世界:
(3)中国教育曙光网:
(4)福建信息学奥林匹克:
(5)第20届全国青少年信息学奥林匹克竞赛:
(6)第15届国际青少年信息学奥林匹克竞赛:
(7)全美计算机奥林匹克竞赛:
(8)美国信息学奥林匹克竞赛官方网站:
(9)俄罗斯Ural州立大学:
(10)西班牙Valladolid大学:
(11)ACM-ICPC:
(12)北京大学:
(13)浙江大学:
(14)IOI:
(15)2003年江苏省信息学奥林匹克竞赛夏令营:
(16)
(17)
(18)
(19)
(20)colin_fox/colin_fox
五 如何备战ACM/ICPC
1,个人准备(算法书,习题集,网上做题和讨论)
2,1000题=亚洲冠军=世界决赛
3,做好资料收集和整理工作
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)