ACM培训大纲

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实用标准文案
ACM培训大纲
基础内容:
数据结构——》搜索
——》图论
DP
数论
博弈
中级内容
数据结构
网络流
第一章搜索
1.二分搜索
三分搜索2.
栈 3.
队列 4.
深搜 5.广搜 6.
第二章数据结构
1.优先队列
并查集 2.二叉搜索树3.
线段树(单点更新) 4.
Trie
5.
精彩文档.
实用标准文案
第三章图论
1.图的表示
1.1二维数组
1.2邻接表
1.3前向星
2.图的遍历
2.1双连通分量
2.2拓扑排序
3.最短路
3.1迪杰斯特拉
3.2弗洛伊德
3.3SPFA
4.匹配匈牙利算法
5.生成树
6.网络流简介
第四章动态规划
1.状态转移方程
2.引入
2.10-1背包
2.2硬币问题
2.3矩阵链乘
3.区间DP
4.按位DP
5.树形DP
6.状压DP
第五章数论
1.欧几里得
扩展欧几里得 2.因数分解3.费马小定理 4.欧拉定理 5.素数6.
6.1筛法
6.2素数判定
6.2.1O(√n)方法
精彩文档.
实用标准文案
6.2.2Miller-rabin测试
第六章博弈
1.Nim和
2.SG函数
第七章中级数据结构
1.树状数组
RMQ 2.
KMP
3.
AC自动机4.
线段树(区间更新)5.
第八章图论进阶
1.网络流问题
精彩文档.
实用标准文案
综述
在很多人眼里,东北大学秦皇岛分校不算是985高校。

所以我们要用自己的能力证明我们有985的实力。

ACM是计算机界认可度最高的一个比赛,可以说只要区域赛有过奖牌,国内任何IT公司没有理由不要。

同时,在高校之中,对一个大学计算机专业的评价,大部分人也会首先看ACM 的水平。

将ACM打出学校,在国内打出一定成绩,对扩大我校影响力很有帮助。

考虑到本校暂时没有进行专题训练的出题能力,专题训练的题目主要从UESTC 2014年集训队专题训练中获取,再加上从别的OJ上找一些题目。

训练的平台设置在华中科技大学的vertual judge上面。

本人将在毕业之前承担培训任务。

在2015学年开始之前,培训计划为每两周一次,中间空闲的时间由大二或者大一熟悉C++的同学给不熟悉C++的同学进行基础的讲解。

寒假时间计划每周一次。

2015学年开始之后,考虑到本人要进行考研备考,培训的频率定为一个月一次,根据实际情况增加课程,所以将在寒假结束之前尽量完成多的培训任务。

培训的目标是在2015年区域赛中能够获得出线的资格,并且在2016年邀请赛中能够有队伍能够拿到银牌的水平。

根据各大高校的培训资料及总校给的资料汇总,将ACM的内容分成以下几章。

每章的开始根据本人的认知经验,分成必考题和常考题两类。

必考题为每场必出题型,大部分水题在必考题范围之内。

想取得成绩必考题必须作对。

常考题型有时候会最为水题,有时候会作为拉分题。

培训分为基础部分和中级部分,本人实力有限,没有能力进行高级部分的讲解。

高级部分留给学弟学妹们继续努力^_^。

第一章搜索
二分和三分是很基础的一种技术。

参考外校的培训教材,没有把二分和三分放入搜索一章。

但是实在不知道应该放到哪里去,就在这里讲。

反正都是搜索。

二分最基本的应用是求单调函数跟x轴交点的问题使用的方法,有些算法也会使用二分搜索2)算法优化为O(nlogn)O来降低复杂度。

一个应用是在最长递增子序列中将DP的(??
三分的应用是求抛物线等在一定区间内有唯一极值的问题中,求极值的方法。

栈和队列本属于数据结构的内容,考虑到这两种数据结构在搜索中应用较多,将其放入搜索一章。

栈是一种先入先出的数据结构。

可以用一个数组来保存栈中元素,用一个指针指向栈顶,就实现了一个栈,也可以用STL中提供的栈。

队列是一种先入后出的数据结构。

可以用一个数组来保存队列的元素,一个指针指向队列头,一个指针指向队列尾,每次入队列队尾向后一个,出队列队首向后一个。

STL也提供了队列。

递归转换是一个很常见的优化措施。

有些题目可能会卡着让递归形式的算法超时,这个时候就必
须改成非递归形式。

非递归形式使用栈来实现。

典型的例子就是二叉树的后续遍历可以改成非递归形式。

深度优先搜索与广度优先搜索是两种最基本的搜索方式。

很多启发式的搜索建立在这两种方式之上。

本章只设计深度优先及广度优先。

本章必须掌握的知识有栈和队列的定义,二叉树遍历的递归与非递归形式,深度优先搜索,精彩文档.
实用标准文案
广度优先搜索。

深刻的理解递归搜索的原理。

第二章数据结构
数据结构是必考题型之一。

优先队列在之前的培训之中讲解过一次,考虑到那次培训没有讲清楚,这里重新再讲一遍。

优先队列是一种特殊的队列,它能够在O(logn)的时间内找出队列中优先级最高的元素。

虽然STL中提供了优先队列的模板,但是这里要求能够自己实现优先队列
并查集是一种集合操作的数据结构。

其基本操作是“并”和“查”。

实现起来简单,速度快。

并查集最直接的运用是图论中最短路算法,在这里仅讲并查集,为图论打下基础。

线段树是区间操作很重要的一种数据结构,可以实现单点更新,区间更新,区间查询,复杂度大约是O(√h)。

在这里只讲单点更新,区间查询。

区间的更新留到中级数据结构讲。

字典树是字符串操作的很重要的类型,能够快速查询字符串是否在曾经出现过,是AC自动机的基础。

本章必须掌握内容,优先队列的实现,并查集的实现,线段树单点更新及区间查询的实现。

第三章图论
图论是一门很大的学科,涉及范围十分广泛。

必考题型之一。

难度大的图论会跟动态规划结合,但是这些内容在本章不涉及。

图的表示方法很多,竞赛中常见的有三种,二维矩阵,邻接表,前向星。

二维数组的缺点是浪费空间,邻接表如果用数组存储的话也会浪费空间,如果用容器存储会使速度变慢。

前向星是一种即快又省空间的方法,但是实现起来会多几行代码。

图的遍历问题在学校的数据结构课上面会有,但是仅仅是遍历,在这里要为大家展现遍历问题更有效的应用。

最短路算法中,弗洛伊德算法是所有点到所有点的最短路径,迪杰斯特拉算法是点到其他所有点的最短路径,SPFA算法是中国国产的算法,理论上比迪杰斯特拉算法复杂度的常数要低一些。

匈牙利算法用于二分图匹配问题,又称为小月亮算法。

生成树问题一般会考最小生成树。

网络流问题在本章仅仅简介,不做要求。

本章必须掌握的知识点,图的三种表示方法,双连通分量的求法,拓扑排序的原理以及实现。

弗洛伊德算法中用到了动态规划的知识,下一章就会讲到动态规划,所以这个算法要牢牢掌握。

迪杰斯特拉算法的证明。

SPFA在理论上由于迪杰斯特拉算法,所以会用SPFA代替迪杰斯特拉算法。

匈牙利算法的实现,最小生成树的定义,求法。

网络流的基本概念。

第四章动态规划
动态规划是竞赛必考题型之一。

有时候会出成送分题,有时候会出成难题。

动态规划难度在于它不是一种特定的算法,而是一种思路,所以变化多端。

跟任何题型都可以结合出题。

动态规划最基本的是状态转移方程,将状态转移方程写出来以后,题目也就解出来了一半。

有些题目可能会比较难实现,这就看平时的功力了。

从最简单的0-1背包问题引入,逐渐深入。

然后开始系统的讲解动态规划中常考的类型,如区间DP等。

本章必须掌握的内容有动态规划方程,0-1背包问题,多重背包问题,完全背包问题,状态精彩文档.
实用标准文案
压缩中必须掌握位运算。

各种类型的DP,简单的能够很快想出思路。

第五章数论
数论是ACM中必考的题型,但是一般简单题里面不会涉及数论内容。

欧几里得算法是求最大公约数的一个算法,在中学期间已经学过其过程,这里主要讲实现。

扩展欧几里得算法是要求出一个x和y,是的ax+by=gcd(a,b)。

因数分解是求出一个整数的所有素因子及其指数。

(???1)≡1(mod p)。

这,b)=1,则??费马小定理内容:设p是素数,??为任意整数,并且gcd(??个定理是右面Miller-rabin算法的理论基础。

欧拉函数是数论中很重要的一个函数,阐述了素数的分布规律,欧拉定理是其一个应用。

素数的筛法是能够在O(n)的时间内找出n以内的所有素数,常用于大表之后解题。

素数判定的第一种是试探的方法,找出一个能够整除的数,那么这个数就不是素数,试探到√n就可以。

Miller-rabin算法是一种在常数时间内测试出一个数是否是素数的方法,基于费马小定理。

每次试探有四分之一的错误率。

所以一般测试五次或者更多次。

本章必须掌握的内容有欧几里得算法,扩展欧几里得算法,费马小定理的内容及证明,欧拉函数的概念,欧拉定理的内容。

素数筛法,miller-rabin算法。

第六章博弈
博弈是ACM中一类常考题型。

主要内容不多。

最根本的是取石子问题,就是两个人轮流取一些石子,按照一定的规则,第一个没有石子可拿的人为输。

Nim和是两个数二进制表示的亦或后的结果。

使用nim和可以方便的解决问题,证明也很简单。

SG函数是表示两方输赢状态的函数也是结题的重要手段。

本章必须掌握的内容,位运算,nim和,SG函数。

第七章中级数据结构
树状数组是求区间和的数据结构,原理理解起来可能有一点点费劲,实现简单,但是局限性不少。

RMQ是range minimum query的缩写,译为区间最小值,充分的利用了区间重叠的性质,有些动态规划的影子在里面。

线段树是非常重要的数据结构。

传说曾经用二维线段树的模板当做简单题来出。

可见其威力。

这里介绍的是线段树的两种区间更新方式,参考LRJ的白书里的内容。

第八章图论进阶
这里会介绍网络流的内容。

网络流难度最大的是建模,实现起来也有一定难度。

由于我能力精彩文档.
实用标准文案
有限,这里只能讲一些网络流基础的内容,各种各样的建模暂时没有能力讲解。

精彩文档.。

相关文档
最新文档