- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ACM学习想
学习ACM感想
大二上半学期,由于报了大学生电子商务竞赛而进入实验室。在大一时,比较迷茫,不知道自己的专业什么内容重要,什么内容不重要。所以在大一下半学期学习C语言这门最基础的程序设计课的时候,老师上课在讲自己也不认真听讲。觉得只要考试能过就行了。结果考试是过了,但对于C语言还是一窍不通。
在大二下班学期,由于选了面向对象程序设计和数据结构,老师的内容不怎么听的懂。开始认识到C语言的重要性,自己从头开始自学,把非计算机专业的C语言借来看,慢慢的赶上去,不懂的就问问同学。把书认真的看了两遍后,再接触接触计量OJ上的题目提高一下自己。就这样我开始接触了ACM。ACM=算法+数据结构。第一次接触ACM,刚开始做简单题的时候我也感觉并不容易,比如有些英文题目看起来比较费劲,要看很久才能搞清楚题目意思,有时候简单题目交上去不正确,题目有很多trick,有时候代码看多了,人就会觉得很厌倦和郁闷,但是不要灰心,我觉得做什么事贵在坚持,只要坚持下来,就会越来越体会到ACM 的无穷乐趣了。后来自己独立思考,把一些没有算法的题目基本上都提交成功了。也觉得有一些成就感,从一点都不会到现在能把一些简单的题目解决。有算法的题目,就自己百度或查一些资料,由于没有老师的指导,有些算法还是模棱两可。在数据结构的课上,老师也给我们介绍了一些算法。
下面是我自己总结的算法:
一.基本算法:(1)枚举.
(2)贪心(3)递归和分治法(4)递推 (5)构造法(6)模拟法二.图算法(1)图的深度优先遍历和广度优先遍历. (2)最短路径算法(3)最小生成树算法(4)拓扑排序 (5)二分图的最大匹配 (6)最大流的增广路算法(KM算法) 三.数据结构
(1)串 (2)排序(快排、归并排(与逆序数有关)、堆排) (3)简单并查集的应用. (4)哈希表和二分查找等高效查找法
(5)哈夫曼树(6)堆 (7)trie树(静态建树、动态建树) 四.简单搜索 (1)深度优先搜索 (2)广度优先搜索(3)简单搜索技巧和剪枝五.动态规划
(1)背包问题. (2)型如下表的简单DP1.E[j]=opt{D+w(i,j)} 2.E[i,j]=opt{D[i-1,j]+xi,D[i,j-1]+yj,D[i-1][j-1]+zij} (最长公共子序列) 3.C[i,j]=w[i,j]+opt{C[i,k-1]+C[k,j]}.(最优二分检索树问题) 六.数学 (1)组合数学: 1.加法原理和乘法原理. 2.排列组合. 3.递推关系. (2)数论. 1.素数与整除问题 2.进制位. 3.同余模运算.
(3)计算方法. 1.二分法求解单调函数相关知识七.计算几何学. (1)几何公式. (2)叉积和点积的运用(如线段相交的判定,点到线段的距离等). (3)多边型的简单算法(求面积)和相关判定(点在多边型内,多边型是否相交)
(4)凸包.
对上述一些排序算法能熟练的掌握。对于其他的一些算法,原理我还是比较熟悉的,要把书上长长的代码转化为自己的代码运用到题目中,还是觉得很难。学算法有一个很重要的方法:每学一种算法的时候可以先看书或者上网查,搞清楚原理之后,可以从OJ上找一些这类算法的简单题做,然后对这个算法比较熟了之后就可以找一些这种算法的变形等比较难的题目做,每做完一个题目我都会在代码旁边写好注释用word文档存起来,定期把文档打印出来。或者可以写下这题的解题报告,说明用什么算法做的,要注意什么问题,便于以后要看时能够快速理解。还有对于ACM程序设计不仅要求你做的题目要多,还要求你的代码长度和运行时间,所以要去研究别人的代码为什么比你短,运行时间为什么比你少。这样你才能有更大的进步。
要了解一些头文件的用处:
1、assert.h设定插入点
2、ctype.h 字符处理
3、errno.h错误报告
4、float.h浮点数处理
5、limits.h 定义与实现相关的各种极限值
6、locale.h定义本地化函数
7、math.h 数学函数库使用的各种定义
8、setjmp.h 支持非局部跳转
9、signal.h 定义信号值
10、stdarg.h 支持可变长度的变元列表
11、stddef.h 定义常用常数
12、stdio.h 支持文件输入和输出
13、stdlib.h定义杂项函数及内存分配函数
14、string.h字符串函数处理函数
15、time.h 支持系统时间函数
16、complex.h 支持复数算法
17、fenv.h给出对浮点状态标记和浮点环境的其他方面的访问
18、inttypes.h 定义标准的、可移植
文档评论(0)