ACM学习感想

合集下载

ACM心得

ACM心得

ACM心得1. 如果题目是枚举的话,即最后化成十分简单的形式比较小,可以直接将各种不同状态的结果运算过程写出来,但是这并不见得比写函数要快多少而且比较容易出错,比如下标没有更改之类,这种错误比较烦人,因为你会查看算法, 但是算法本身并没有错误,所以如果复制粘贴的话,注意不同情况的不同点,如果自己不够细心,最好写成函数的形式(注意判断边界),以防出错.//16:35 2004-4-172. 在编程之后检查的第一件事就是初始化,你的初始化也许写在循环体之外,故只能AC一组测试数据,sample.//19:16 2004-5-63. 写多重循环时得注意i,j的顺序问题,有的时候会把该写j的地方写成i。

这个毛病很容易犯,而且难于debug//17:29 2004-5-64. scanf("%d %d..\n",....), 格式中的\n,可以一直读到回车符,但是读到回车并不会停止(gets()读到回车就不读了),而会一直将回车后面的空格读进去.#include<iostream>#include<cstdio>using namespace std;int main(){freopen("d:\\test.in","r",stdin);int a;char c;scanf("%d\n",&a);c=getchar();printf("%d\n",c);return 0;}//test.in10XXtry this//17:29 2004-5-145. abs 函数的定义是不支持long long 和 __int64 的,所以在涉及到高精度的时候, 最好用if else判断或者define,但是速度较慢 #define abs(a) (a>0?a:-a)//13:07 2004-5-256. 使用pow(double x,double y) 函数的时候要注意,当 x<0 && y>0 那么输出并不是预期的结果,而是-1.#IND00try this:printf("%lf\n",pow(-1.5,0.23));以当不知道 x 的范围,最好fabs() 一下.//11:09 2004-5-267. 一般的judge都装在linux上,可是linux对 atoi() 不支持,但是没有关系,因为无论win抑或linux都对 atol() 支持。

ACM感言

ACM感言

北大计算机研究生的ACM感言ACM感言shangmi n时间过得真快,转眼间现在马上就到了毕业的时候了。

大学四年的生活就这样在漫不经心中度过,在这四年里我留下了许多值得回忆的东西。

参加ACM的经历和体会和其他美好的经历一样,永远值得我回忆和珍惜。

一个偶然,我报考了兰州大学计算机科学与技术系;又一个偶然,我开始了解ACM,开始慢慢喜欢上ACM。

我相信这都不是偶然,或许是我们所说的缘分。

2003年我从一个小县城来到兰州大学,那时我计算机几乎没有任何了解,也从来没有接触过计算机。

现在我还清楚的记得大一时的上机课,我在internet explore的地址栏里面练习了三个小时的打字,为知道了如何实现大小写字母的转换而欣喜。

回想起那时的自己真的感到很幼稚,但那就是曾经真实的自己。

直到大二下学期我还不知道计算机方面竟然还有什么程序设计大赛,11月份我在校园里看到了第29届ACM/ICPC上海赛区的邀请信,遗憾的是学校并没有打算参赛。

但是我看到了几个ACM的网站,回到宿舍里我第一次看到了一些ACM比赛的题目,当时只有一个感觉,就是难。

不是那种要搬走一座大山的难,虽然很艰难,但是只要一点一点的搬,或许总有成功的一天。

而是根本就不知道要干什么的难,难的无法下手,难得你不知道题目再说什么。

05年5月份,学校要开始举办校内的ACM/ICPC的选拔赛,听到这个消息我沉寂了几个月的心又开始动荡不安了起来,开始兴奋了起来。

为了能进入学校的集训队,我开始在浙大的oj上进行一些训练。

那时候只要有空闲时间我就在上面练习,也丝毫没有顾及马上就要到来的期末考试。

只是那时候没有人指导,自己制作一些很简单的题目,但是那些题目对我来说还是很费力的。

一天也只能做3,4道,进展很缓慢。

庆幸的是校内的选拔赛我终于顺利通过,成功进入了学校的集训队,这对我自己也是一个不小的鼓励。

05年的暑假是我永远都不会忘记的一段时间。

每周四天的课,除了上课的时间我几乎都是面对着电脑在做题。

c语言学习心得体会(精选10篇)

c语言学习心得体会(精选10篇)

c语言学习心得体会(精选10篇)c语言学习篇1C语言是一种结构化语言,是大部分编程语言的基础,C语言学好了,以后的JAVA,C#以及更多的编程语言才有可能学好。

下面就跟南宁达内小编一起,要学好C语言必须了解的四点:1、课前认真预习,把下一节要上的内容先自己看一遍,把不懂的地方打个标记,等上课的时候可以请教老师。

理解书上的例子,搞懂每个语句的含义,用法。

看完后尝试着不看例子自己编写程序,编完以后再跟书上进行比较,看自己的程序还有哪方面的不足,再进行改正。

想要真正学好C语言光看书是不够的,一定要自己多动手。

2、上课认真听讲积极思考,提高上课效率。

老师上课讲述的都是课程的重点和难点,听好课程可以达到"事半功倍"的目的。

3、课后复习。

把每天的上课内容回家再温习一遍,独立完成课后的作业,如果有时间,最好能找点课外书籍、课外习题什么的来巩固所学的内容。

4、主动上机,多多实践,提高动手能力。

通过上机实践来验证所学的理论,通过在机器上查找错误来巩固概念,通过提高上机能力来促进理论学习,开阔编程思路,提高反映速度,提高分析问题解决问题的能力,锻炼心理素质,提高心理承受能力。

学习C语言的初期重点要放在掌握语言的语法和规定上,一定要养成良好的编程习惯,平时写程序注意语法规范格式控制,格式规范了,出了错误也容易找到出错的地方,这是C语言的基础;后期的重点要转移到掌握编程的思路和基本算法上来。

课后多做习题,找一些经典例子尝试自己编写,写程序切忌半途而费,想到一个思路,就要按自己思路把它写完,就算错了,也可以让自己了解为什么这样做会错?错在哪里?会出什么结果?以后自己也很难在这个地方犯同样的错误。

当学到一个新的知识点,就试着把它运用到以前做的习题上,不但巩固了以前学的内容,也更加能加强新知识的理解。

学习C语言就是要经过以上这样几个反复,才能前后融会贯通,积累所应该掌握的知识。

C语言是这样,其他语言也是这样,从基本抓起,多动手,多动脑,不懂就问,注意平时积累。

学习c语言的心得体会(优秀10篇)

学习c语言的心得体会(优秀10篇)

学习c语言的心得体会(优秀10篇)学习c语言的心得体会篇1在初学C语言的一个学期后,我们进行了C语言实训阶段,尝试编写一个比较复杂的程序系统。

在为期一周的时间中,我们同组的同学共同的感受是:C语言实训和平时上课所接触的程序是有很大不同的,所经受的考验和克服的困难是平时所无法比拟的。

好在同组的搭档们精诚合作,分工明确,有问题共同解决,攻克了C语言实训的复杂程序。

在这里,我作为其中的参与者,感触良多。

在这次实训中,我对对C语言有了一个更深的了解认识,也对这个学期学的知识得到巩固,还尝试运行编程,每次运行程序成功,让我对下面的项目就充满信心。

通过自己与同学合作编写程序,最终把最初的理论知识转化基本技能。

这次的实训,使我对C语言的学习产生浓厚的兴趣。

还是这次实训,最令人激动的就是合作做项目,虽然那只是一个很小很小的项目。

每天大家来得很早,大家在一起学习,取长补短,我们很好的在实训中长知识,提高我们的学习热情。

实训中深切体会到了老师认真负责的伟大的精神和热情为同学指导的促学方式,虽然对有些时候老师没给我们指出解决问题的方法有些小抱怨,但是到了结束时才知道,这种教学让我们自己学会了自学,学会了去看懂别人的代码。

更多是老师给的感动,每天在我们来之前就到了教室,在讲课中海给我们分享他在公司上班的一些心得和体会,还有那些我们应该注意的事项,这些是平时上课时无法学到的,是更深层次的巨大收获。

通过这次实训,也使我们发现了许多问题。

在实训中,我们认识到自己还有很多的知识没学好,基础知识没理清,而且许多东西还要去翻书,去上网搜索。

而且遇到一些小错误运行不出来,就会烦躁不安,觉得有些自暴自弃或者抱怨项目的_,以后要克服,尽量保持一颗良好的心态,学好C语言,也学好用C语言编写一个按要求的系统。

还有就是对于未来,近程就是下学期,我觉得我还有许多方面需要提高。

首先我要继续学习好C语言的基础知识,然后能在电脑上熟练的运用。

然后每天都能写一些程序,上网时候多看一些优秀的教程和优秀的代码。

ACM学习心得

ACM学习心得

这个非原创、、、、、但是,为了让更多人看到,无奈的原创一下、、、写的很好,虽然真正学习算法(说的好听是学算法,不好听就是A题)近一年了,但是,学习的效率非常低,最近才稍稍掌握点技巧。

这篇文章不知道是哪位大牛写的,在朋友的博客中看到了,觉得很有借鉴作用,就粘了过来,共勉。

加油!!!吖飒~~~~刻苦的训练我打算最后稍微提一下。

主要说后者:什么是有效地训练?我想说下我的理解。

很多ACMer入门的时候,都被告知:要多做题,做个500多道就变牛了。

其实,这既不是充分条件、也不会是必要条件。

我觉得一般情况下,对于我们普通学校的大学生,各方面能力的差距不会太大,在这种情况下,训练和学习的方法尤为重要。

其实,500题仅仅是一个标志,而且仅仅表示你做ACM-ICPC有一定的时间,我们训练的目的是什么?我觉得有四点1、提高编程能力2、学习算法,(读书,读论文,包括做一些题目验证)3、准备好面临将到来的挑战(熟悉题型,调整心态)4、启发思维。

这里四个目的,从训练的角度上,重要性逐次递减;为什么呢?因为前面的因素是后面的基础。

而是后面的目的,想达成越为不易。

我觉得前3者能保证你ac掉你能做的题,即使难题始终不会做,也可以ac掉中等偏难的题目。

而需要一定思维难度的题,要以前三者为基础而且属于训练的后期,中期只能作为偶尔调节。

当然,我思维也烂得要死,对这点没什么发言权,大家可以鄙视我。

我这里想主要说下第2点。

对于算法,我发现,很多我们这样的弱校ACMer选手没有侧重好算法的学习。

下面要讲的几点,可能都很老套,但我想以035对比我自己的例子给大家做说明。

<1>算法学习是ACM比赛所要推广或者要提倡的一个方面记得曾经路过某人的blog,上面说他作比赛的时候遇到了一个dijkstra,他没做出来,然后评论到(大意):我才不会花时间去搞明白“这种”算法。

“这种”也许有可能是指:没什么实用性,对吧,这样我就不想评论了(又是有关科学和工程的讨论)。

ACM 学习心得

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)凸包.对上述一些排序算法能熟练的掌握。

acm课程设计感悟

acm课程设计感悟

acm课程设计感悟一、教学目标本课程的教学目标是使学生掌握ACM课程的基本知识和技能,培养学生独立思考、解决问题的能力,并提高学生团队合作和沟通的能力。

具体目标如下:1.知识目标:学生能够掌握ACM课程的基本概念、原理和方法,了解相关领域的最新发展。

2.技能目标:学生能够熟练使用ACM课程相关软件和工具,具备编程和算法分析的能力。

3.情感态度价值观目标:学生能够认识到ACM课程在解决问题和创新中的重要性,培养对计算机科学的兴趣和热情。

二、教学内容根据课程目标,本课程的教学内容主要包括以下几个方面:1.ACM课程的基本概念和原理:数据结构、算法、编程语言等。

2.ACM课程的相关技术和工具:常用编程语言、开发环境和算法分析工具。

3.ACM课程的应用场景和实践:通过实际案例讲解ACM课程在各个领域的应用。

4.团队合作和沟通能力的培养:小组讨论、项目实践、交流分享等。

三、教学方法为了实现课程目标,本课程将采用多种教学方法,包括:1.讲授法:讲解ACM课程的基本概念、原理和方法。

2.案例分析法:通过实际案例讲解ACM课程在各个领域的应用。

3.实验法:让学生动手实践,熟练使用相关软件和工具。

4.讨论法:引导学生进行小组讨论,培养团队合作和沟通的能力。

四、教学资源为了支持教学内容和教学方法的实施,本课程将准备以下教学资源:1.教材:选用权威、实用的教材,为学生提供系统的学习材料。

2.参考书:提供相关领域的经典著作和最新研究成果,拓宽学生的知识视野。

3.多媒体资料:制作精美的PPT、教学视频等,提高学生的学习兴趣。

4.实验设备:配备必要的实验设备,确保学生能够进行实践操作。

五、教学评估本课程的评估方式包括平时表现、作业和考试等。

评估方式应客观、公正,能够全面反映学生的学习成果。

具体评估方式如下:1.平时表现:通过课堂参与、提问、小组讨论等环节,评估学生的学习态度和积极性。

2.作业:布置适量的作业,评估学生的理解和应用能力。

ACM期末总结

ACM期末总结

ACM期末总结在这个学期,我选了ACM这门选修课,感觉受益良多,老师在课堂的讲解让我全新体会到了ACM程序设计这门课。

ACM(Association for Computing Machinery )中文:美国计算机协会是一个世界性的计算机从业员专业组织,创立于1947年,是世界上第一个科学性及教育性计算机学会。

ACM每年都出版大量计算机科学的专门期刊,并就每项专业设有兴趣小组。

美国计算机协会(Association for Computing Machinery , 简称ACM)它是一个世界性的计算机从业员专业组织,兴趣小组每年亦会在全世界(但主要在美国)举办世界性讲座及会谈,以供各会员分享他们的研究成果。

近年ACM 积极开拓网上学习的渠道,以供会员在空余或家中提升自己的专业技能。

1947年,即世界第一台电子数字计算机(ENIAC)问世的第二年,ACM即成为第一个,也一直是世界上最大的科学教育计算机组织。

它的创立者和成员都是数学家和电子工程师,其中之一是约翰.迈克利(John.Mauchly),他是ENIAC的发明家之一。

他们成立这个组织的初衷是为了计算机领域和新兴工业的科学家和技术人员能有一个共同交换信息、经验知识和创新思想的场合。

几十年的发展,ACM 的成员们为今天我们所称之为“信息时代”作出了贡献。

他们所取得的成就大部分出版在ACM印刷刊物上并获得了ACM颁发的在各种领域中的杰出贡献奖。

在我对ACM的认识里,我觉得ACM程序设计是一个对我们大学生来说一个既具有挑战的课程。

学习他让我对于程序设计有了新的理解,不再局限于大一时候上的C语言课中学到的简单程序编辑。

ACM它更难,在学习它的过程中,使我非常的困难。

也许我学得还是不够深度,但是,我不会放弃这门学问,因为我所学的专业和它息息相关。

所以,学习ACM程序设计是我人生中必备的。

然而我在一学期的学习后,我还学到了一个全新的学习程序设计的方法。

ACM 总结

ACM 总结

ACM培训总结在培训之前,我也一直在搞ACM 这个东西,但是从来没有能系统的搞一下,虽然之前在杭电上也做了一百来道题,但是都是挑的中文题还有简单的英文题来做的,也就是可以做一些简单的字符串处理,简单的排序,最多的是能搞定一两题贪心算法!对算法还没什么概念,就是拿到一个题目就按照自己乱七八糟的思路去做!培训开始的时第一天,讲的是枚举,好多题目都是一些以前或者小时候看过的智力题,当时当然就是猜答案了,而现在用计算机编程来实现,甚至是实现在不同情况下的实现方法,第一次觉得ACM是一个这么有趣的东西!之后的训练让我觉得ACM并不是有趣就可以形容的,有趣,有难度,做这个东西大概是需要一点天赋的,开始的培训没有涉及到什么具体的思想,题目做起来还是比较顺利,可能是因为符合我以前的风格吧,但是后来发现,ACM 真不是好惹的,有算法,有思路,但是你就是无法快速的用算法语言表达出来,有时候憋了一个多小时完成了代码,但是结果总是不符合要求,或者符合了自己的要求但是到OJ 上就是通过不了,顿时觉得ACM注定是一条艰辛的路。

再后来就是接触到一些真正的算法了,这些算法说实话基本上以前都多多少少接触过,在以前觉得是很难(现在还是不简单),没信心去搞明白,于是每次做题一遇到搜索之类比较抽象的一类算法的时候都是看一下题目就放弃了,但是现在培训,专门就来针对这些问题来训练,也就是说不管多难也都要懂,每天上午老师讲算法思想,分析代码,下午自行做相关方面的训练,一天基本上除了睡觉就是培训做题(其实感觉也挺爽的),每天差不多能做出五道题目左右,当然不是完全自己写出来的,也有好多是参考网上大牛的思想才写出来的,就是每天这样搞,对于我来说效果还不错,就这样每天的训练可以在最大程度上客服我的惰性,因为大家都在做题如果自己不做那么就会有一种落后的感觉(虽然我现在的水平还是相对较差,但是我从来都不习惯落后),还有就是在做题的时候偶尔也会和大家一起交流,认识了一些其他班的ACM相对比较牛的人,我觉得他们都挺厉害的,有时候他们的思想说出来却什是我想不到的,现在大概明白为什么ACM要三人组队了,人多了比较混乱,人少了缺少思想碰撞。

acm感想(北大学生)

acm感想(北大学生)

比赛总结——江云亮比赛终于结束了。

原本以为可以“解脱”了,睡个好觉了。

可是闭了眼睛全都是几个月以来的点点滴滴,想忘都忘不掉。

借这个机会写下来自己的一些感受与大家分享。

高中时搞过很短时间的信息学奥赛,学到了一些东西。

感觉还是很有收获的,还有一个很重要的原因是搞计算机竞赛的时候是我最受挫折的时候,计算机老师给了我最大的鼓励和关心,让我对自己没有丧失信心。

所以一是兴趣,二是报恩,我选择了北大计算机系。

大一寒假我上火车回北京的前一天,计算机老师请我吃饭,当时她提到了ACM,提到了李文新老师,于是,沉寂了将近两年的程序设计竞赛热情,在我心中渐渐重新燃起了。

我决定开学以后去打听这方面的消息。

等到回到北大,选完了所有的课,有一天百无聊赖,打开通选课手册才在一个不起眼的角落发现了李文新老师和她的《问题求解与算法分析》。

但当时已经晚了,周二的9-10节我已经选了英语课,而且退不掉。

怎么办?我做了一个决定,英语课我打游击,算法课我旁听!每个周二的9-10节是我最开心的时候,在电教那间仄仄的教室里,我和为数不多但都是一样喜欢编程的战友们在李老师的指导下学习,讨论,度过了一个个难忘的日子,水平在一点点提高,和大家的相处中我们成了好朋友:聪明的westever,挺憨厚的fanonal,令人刮目相看的女生dolly,总是带着笔记本去上课的farui大哥,还有与我情同手足的ian…虽然我们的水平很有限,但是毕竟在一点点进步着。

每周日的练习赛我基本都参加了,李老师为了照顾我们,都挑了一些很简单的题目,但是每次的破解都会让我有种成就感,于是把课余时间都充分利用起来了,一有空就在POJ上做题,做不出就去同ian讨论。

想想那段日子过得真的特别充实。

北大ACM选拔赛如约而至,我考得很惨,想想自己和那些没怎么训练的同学都只做3道题,真的很不甘心。

而这也让我知道了自己的差距,以前对进集训队没有什么概念,现在我突然萌生出了强烈的念头:争取进入集训队,在训练中提高自己的水平。

学习acm心得体会

学习acm心得体会

学习ACM的心得体会作为学计算机专业的学生,我想说我们要学的课程还真不不少,我也确实希望自己能多学一点东西,多懂一点知识。

对于acm,这种本来就隶属于计算机学科的知识或者说是学计算机专业学生的使命,我想它值得我花点时间去关注。

其实学院本来就有acm 这件事,有这个实验班存在,知识大一的时候我并没有选择去参加,因为那个时候我对软件实验班更感兴趣点。

不过后来,在大二这学期开始,选选修课的时候,我看到了有这个课程存在,所以我决定不要错过这次机会,至少我应该去认识一下。

也就是这样我进了老师的这个班级,在老师的带领下了解acm。

acm是一个学科?acm是干嘛的呢?acm学了后是不是更好找工作了?反正我有好多的疑问,大概想了一下acm应该和编计算机程序有关。

在老师的第一堂课中,我明白了一点,那就是想学acm,你就得能坚持住,一两轮培训下来如果你还在,这并不能说明什么,但风风雨雨中过后你还能坚持,说明你已经算走上正轨呢。

老师的课讲得很好,对acm习题的讲解,以及分析,不说我完全明白,但至少我每次都能听得懂,而且开始对acm有想法了。

其实我觉得学acm挺难得,不管是你要学还是想要学好。

刚开始接触他的时候还是有吃不消,觉得蛮难的,虽然我有c++的底子,但是acm对逻辑思维能力要求真的好强的。

尤其是听到老师说“有些大神做题目,有时两三天都是坐在电脑前围着一个题目,不做出不肯罢休”,我在想我能做到吗?真的我对自己还是没有放弃,即使是自己写不出代码,我还是去尝试。

我觉得做ACM,最重要的自己是对算法的理解和掌握,要多看一些这方面的书籍,最好的就是去图书馆找这些书先看先学。

然后上网找题目做。

比如老师经常提到的poj。

我打开北大acm试题的网站,开始感觉到的最大压力不是试题,因为我连题目都难看懂,这种英文题目太让我头疼了。

我下载金山词霸,试着努力先看懂题目,然后发现还是做不了。

我又回过头来做老师上课课件里讲的题目,因为我听了一遍,至少还有点印象。

ACM学习总结

ACM学习总结
注:还有好多很杂的问题难以归类。比如数学上的各种公式,它们思想的由来都值得研究。
2、编程水平的提升:
感觉根据算法直接写代码的能力强了很多,对稍微复杂问题的分析能力,解决问题能力得到了全面的提升。还有就是编程中出现的BUG越来越少了。熟悉很多有用的函数,对字符串的处理能力,简化代码的能力,调试代码的能力都提升了一个档次。
1、学到的算法小结:
掌握的非常熟悉的算法:
简单的动态规划:包括思考问题的方式和角度,能从简单的问题中提取出动态规划的状态转移方程,关于矩阵内部运算的DP问题比较熟悉,对常见的动态规划问题和经典问题也有一定的了解。
比较简单的贪心:贪心与其说是一种算法,更是一种思想。在构造最优解的每一步过程中,都在构造局部最优解,解这类问题关键是找到最优策略,并分析最优子结构能否构造全局最优解。
生成函数问题:稍微想几秒钟能马上把模板给写出来。
大数高精度问题,没什么技术含量,主要是细心,耐心。主要是在具体问题中要区分出哪些问题是大数问题。还有就是代码的简化。
PRIME算法求最小生成树,闭着眼睛可以写出来,其实也是贪心思想的应用吧。
求素数时用的筛法,能简化代码,并熟练运用。
二叉树的应用:判定树。
对数log的思想解决数论中的一些问题。
一些排序算法。
深度优先搜索的思想。
回朔搜索的思想。
二分与分治思想。
搜索中的剪枝技巧。
递规方法以及思想。
运用离散数学中的一些数理逻辑、简单图论、简单数论解决一些问题。
组合数学的一些思想方法:fabonacci数列问题、递推方法、排列组合算法的运用。
打表方法。
欧几里德算法。
调用sort排序。
组合数学上的catalan数的思想。

我为什么学ACM

我为什么学ACM

我为什么学ACM时间过得真快,大三的上学期就要过去了,可以说这半年来,我只做了一件事,那就是准备并参加ACM-ICPC国际大学生程序社计竞赛。

做任何事情无论是对是错,都必须好好思考总结一番,如果我做错了,我应该吸取教训,改正错误;如果我是对的,那我应该再接再厉,取得更大的进步。

为了这件事,我耽误了这学期的课程学习,经过几个月的准备,我参加了亚洲区北京赛区的比赛,获得优胜奖;还参加了西安赛区的比赛,获得三等奖。

成绩并不出众。

这里就要问了,我浪费了宝贵的大三时间换来的这个成绩值得么,或者更进一步,我们搞ACM 这项比赛值得么?我无法把握未来,我无法判断这样做究竟是对是错,周围的同学大都进入了实验室进行项目开发,而我却很多东西还都不知道。

ACM似乎有种魔力,即使比赛完了,每天我仍忍不住放下功课跑到POJ上去看看,有种拿到题目敲代码的冲动。

我真是走火入魔了,我现在还想着如何学习提高自己的ACM实力,想着明年的比赛弥补今年的遗憾,我甚至列出了个长长的书单来:人工智能、组合数学、数论、计算几何、动态规划……做好了学习计划,把一切抛之脑后。

难道它比考研还重要么?我虽然不知道ICPC是不是真的有那么好,那么有一点我知道,那就是我已经深深地喜欢上了这项比赛,或者说,不是比赛,而是一个活动,一个过程,因为我得到的乐趣并不是与别人竞争赢得比赛的喜悦,而是挑战自己得到的成就感!POJ上有一篇著名的帖子,题目就叫“搞ACM值得么?”回帖者达数百人之多。

很多帖子内容我已经记不大清楚了,但有一个人的留言给我留下了深刻的印象,他说虽然不知道自己做的值得不值得,反正他在编程时他的同学们都在打电子游戏。

我想,搞ACM总比玩游戏要好的多吧。

而我也真真正正地乐在其中,最近半年来我玩游戏的时间还不到5个小时,我已经把做ACM 当作是打电子游戏,每做出一题的喜悦之情真是难以形容,这种感觉我想只有那些我的同道中人才能体会吧。

每年比赛完,就会看到来自各个学校的ACM选手一篇又一篇的“退役宣言”。

ACM(五篇范例)

ACM(五篇范例)

ACM(五篇范例)第一篇:ACMDijkstra 模板/*************************************** * About:有向图的Dijkstra算法实现 * Author:Tanky Woo * Blog:t=0;if(flag == 0){printf(“Non”);}else{for(int i=min;i<=max;++i){if(mark[i]==1 && arr[i]==0)cnt++;}}if(cnt==1)printf(“Yesn”);elseprintf(“Non”);}} return 0;搜索算法模板BFS:1.#include2.#include3.#include4.#includeing namespace std;6.const int maxn=100;7.bool vst[maxn][maxn];// 访问标记8.int dir[4][2]={0,1,0,-1,1,0,-1,0};// 方向向量9.10.struct State // BFS 队列中的状态数据结构 11.{ 12.int x,y;// 坐标位置13.int Step_Counter;// 搜索步数统计器14.};15.16.State a[maxn];17.18.boolCheckState(State s)// 约束条件检验19.{ 20.if(!vst[s.x][s.y] &&...)// 满足条件 1: 21.return 1;22.else // 约束条件冲突 23.return 0;24.} 25.26.void bfs(State st)27.{ 28.queue q;// BFS 队列29.State now,next;// 定义 2 个状态,当前和下一个30.st.Step_Counter=0;// 计数器清零 31.q.push(st);// 入队32.vst[st.x][st.y]=1;// 访问标记33.while(!q.empty())34.{ 35.now=q.front();// 取队首元素进行扩展36.if(now==G)// 出现目标态,此时为Step_Counter 的最小值,可以退出即可37.{ 38.......// 做相关处理39.return;40.} 41.for(int i=0;i<4;i++)42.{ 43.next.x=now.x+dir[i][0];// 按照规则生成下一个状态44.next.y=now.y+dir[i][1];45.next.Step_Counter=now.Step_Coun ter+1;// 计数器加1 46.if(CheckState(next))// 如果状态满足约束条件则入队 47.{ 48.q.push(next);49.vst[next.x][next.y]=1;//访问标记 50.} 51.} 52.q.pop();// 队首元素出队53.} 54.return;55.} 56.57.int main()58.{ 59.......60.return 0;61.}代码:胜利大逃亡Ignatius被魔王抓走了,有一天魔王出差去了,这可是Ignatius逃亡的好机会.魔王住在一个城堡里,城堡是一个A*B*C的立方体,可以被表示成A个B*C的矩阵,刚开始Ignatius被关在(0,0,0)的位置,离开城堡的门在(A-1,B-1,C-1)的位置,现在知道魔王将在T分钟后回到城堡,Ignatius每分钟能从一个坐标走到相邻的六个坐标中的其中一个.现在给你城堡的地图,请你计算出Ignatius能否在魔王回来前离开城堡(只要走到出口就算离开城堡,如果走到出口的时候魔王刚好回来也算逃亡成功),如果可以请输出需要多少分钟才能离开,如果不能则输出-1.Input 输入数据的第一行是一个正整数K,表明测试数据的数量.每组测试数据的第一行是四个正整数A,B,C和T(1<=A,B,C<=50,1<=T<=1000),它们分别代表城堡的大小和魔王回来的时间.然后是A块输入数据(先是第0块,然后是第1块,第2块......),每块输入数据有B行,每行有C个正整数,代表迷宫的布局,其中0代表路,1代表墙.(如果对输入描述不清楚,可以参考Sample Input中的迷宫描述,它表示的就是上图中的迷宫) 特别注意:本题的测试数据非常大,请使用scanf输入,我不能保证使用cin能不超时.在本OJ上请使用Visual C++提交.Output 对于每组测试数据,如果Ignatius能够在魔王回来前离开城堡,那么请输出他最少需要多少分钟,否则输出-1.Sample Input 1 3 3 4 20 0 1 1 1 0 0 1 1 0 1 1 1 1 1 1 1 1 0 0 1 0 1 1 1 0 0 0 0 0 1 1 0 0 1 1 0Sample Output 11代码:#include #include #include #include #includeusing namespace std;int tx[] = {0,1,-1,0,0,0,0};int ty[] = {0,0,0,1,-1,0,0};int tz[] = {0,0,0,0,0,1,-1};int arr[55][55][55];int known[55][55][55];// 访问标记int a,b,c,d;struct state{int x,y,z;// 所在的坐标int step_count;//统计搜索步数。

ACM成功者的经验

ACM成功者的经验

北京、上海
一年以后,半数老队员退役,三位新队员加入(张俊彬 csd 03,项光特 csd 05,吴笃敏 软件 05)同时由于上一年的我们在奖牌上的突破,ACM/ICPC在我们学校的知名度提高了不少,除了我们以外还有一些爱好者在做题训练,现在poj搜一下xmu已经可以看到很多身影,不象当初我们刚开始的时候那么形单影只。希望随着学校对ACM竞赛越来越重视,会有越来越多的同学参与道这项竞赛当中来,他们都是珍贵的后备力量,有他们才有我们学校ACM竞赛的未来。其实我们参赛获奖除了获得荣誉,获得肯定以外,更高兴的通过我们的努力让学校注意到我们,吸引更多的同学进入这项赛事,喜欢这项游戏。客观的说,我们学校在ACM上的投入相当的少,不提上海交大夸张的近百万的经费,就是与其他的一些学校相比也颇有不如,不管是在赛前培训,训练机房,还是比赛经费方面都还有很大不足。不过,现在已经有很大改善了,这也是我们的实力得到学校肯定的结果之一。去年另一个令人欣喜的是,我们还组建了一支女队,她们是(吕武玲 csd 02,林倩瑜 csd 05,黄文秀 csd 05),虽然实力稍差,但确实是开创了历史。而这一次我的队友是张弛和项光特(csd 05级)。 客观的说,这一支队伍是我们学校有史以来实力最强的一队,擅长编码,实战能力超强的我加上理论扎实,数学功力深厚的张弛,还有一个在noi久经考验的项光特,我们自信已经有挑战国内任何一支强队的能力。在暑假训练的时候,我们就信心十足,可以说今年我们就是冲着金牌去的。而在poj的热身赛中两次夺得第一,更上让我信心暴增。北京之行就是在这样的背景之下开始的。在去之前,对清华充满了憧憬,和大多数人一样我也曾经梦想过成绩清华学子。可事实总是残酷的,我再次体会到厦门大学的美丽名声在外确实不是没有来由的。再加上北京阴沉的天气,清华竞赛的组织不力,心目中清华的形象几乎破灭殆尽。在后面的现场赛中,我们先是由光特过了一道简单题,然后我过了一道搜索,最后他又过了一道博弈。虽然我们只过三道题目,但是由于我们做题的时间都很短,罚时很少,最终只排在过了四道题目的中国科学技术大学之下,获得第二名,拿到我们的第一块金牌,并且获得了参加世界总决赛的资格。能获得这样的成绩有很多的原因,第一是清华举办的比赛,他们自己不能派队伍参赛,导致名震天下的楼教主没有出手,第二是传统强校上海交通大学没有派队参赛,这无形中减少了潜在的对手,当然最重要的是我们已经有了足够挑战金牌的实力。北京之战是我们的成名之战,ACM社区就象是一个江湖,在这里你最大的依仗是你的实力。所谓一朝成名天下知,等我们到上海大学参赛的时候,就不再是默默无闻,一不小心就被当成是厦门大学的牛人,让我们很是虚荣了一把。如果说在北京夺金靠的是项光特的神勇表现,上海的金牌就是靠我的人品大爆发,一开始我就过了一道简单题,然后和张弛讨论以后过了一道树状dp,接着又过了一道搜索。稍后,项光特过了一道数学题,最后经过不停的优化我终于又过了一道搜索。最终我们排在了第七,排在我们前的是两支清华的队伍,两支上交的队伍,两支复旦的队伍,由于上交和复旦已经在其他赛区获得第一不计入排名,而同一个学校只算一个排名,我们最终还是排在了第二。只能拿到第二是有点遗憾,但是已经是超出预料的成绩,夺冠的任务就交给将来的师弟师妹了。

《ACM集训心得体会》

《ACM集训心得体会》

《ACM集训心得体会》第一篇:acm集训心得体会冬季培训心得体会寒假这一个星期的学习培训,是我对acm有了更深层次的理解,知识面也有所扩展。

下面,我来谈谈对这次培训活动的几点心得。

一,凡事贵在坚持。

acm对一个人的逻辑思维能力要求很强。

当在做题过程中碰到难题时要耐得住心,沉住气,不断地思考,有不做出不罢休的精神。

二,对自己要有信心,要相信自己。

当一个题目做出来提交出差后,不要急,回过头来把题目再认真读一遍,注意输入输出的格式,对照代码进行修改,改好了再提交,不能因为一次有错就盲目的提交。

在修改代码的过程中要多想想为什么,这样才能提高自己。

三,有目的有针对性的训练。

在做题之前,我们要明确自己的定位,然后根据自身的情况找有针对性的题目进行练习,在不断地练习中形成系统的知识体系。

四,量变带来质变。

我们都知道不积小流无以成江海,不积跬步无以至千里。

学习也是一样的,需要一定的练习量才能达到质的飞越。

在平时自己找题目进行练习,多积累一些经典的算法是很有必要的。

五,有目标有计划。

在这次的学习培训结束后,我结合自身的情况,做了规划。

在做题上坚持之前的计划认真完成;在改程序时不仅仅局限于改错,还要能将复杂的程序简单化;每做完一定的题目后都要进行归纳和总结,复习回顾也是重要的。

第二篇:acm集训心得体会(大全)冬季培训心得体会寒假这一个星期的学习培训,是我对acm有了更深层次的理解,知识面也有所扩展。

下面,我来谈谈对这次培训活动的几点心得。

一,凡事贵在坚持。

acm对一个人的逻辑思维能力要求很强。

当在做题过程中碰到难题时要耐得住心,沉住气,不断地思考,有不做出不罢休的精神。

二,对自己要有信心,要相信自己。

当一个题目做出来提交出差后,不要急,回过头来把题目再认真读一遍,注意输入输出的格式,对照代码进行修改,改好了再提交,不能因为一次有错就盲目的提交。

在修改代码的过程中要多想想为什么,这样才能提高自己。

三,有目的有针对性的训练。

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

学习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> 定义标准的、可移植的整型类型集合。

也支持处理最大宽度整数的函数19、<iso646.h>用于定义对应各种运算符的宏20、<stdbool.h>布尔数据类型类型。

21、<stdint.h> 标准的、可移植的整型类型集合。

该文件包含在<inttypes.h>中22、<tgmath.h> 一般类型的浮点宏23、<wchar.h>用于多字节和宽字节函数24、<wctype.h>用于多字节和宽字节分类函数25、<fstream.h> 文件输入和输出26、<iomanip.h> 参数化输入和输出27、<iostream.h> 数据流输入和输出C语言中要用到的头文件我基本上都已经总结出来了,要掌握经常用到的头文件(<ctype.h>、<string.h>、<stdlib.h>、<stdio.h>、<fstream.h>、<math.h>),不经常用到的要知道有这样一个头文件存在。

如果真的要用到你能在网上查的到就够了。

我们现在用的编译器都是Microsoft Visual C++ 6.0,关于编程的时候还有一些小问题要注意:1、拼写单词的时候要注意,还要注意单词的大小写。

2、一些符号要注意,不要把“==”写成赋值符号“=”,还有分号不要漏写。

这是我经常犯的错误。

3、oj上编辑器的问题,有写题目用C++超时,用G++却神速无比,有时候又反过来,所以一些题目不妨用两个编辑器都交一下。

又比如说一些涉及精度的题只有用C++交才能提交。

4、还应该注意题目的要求,它要你用int,你就别用double或者float这样你都是不能提交正确的。

在实验室一个学期,真的收获了很多,不管是人际关系还是学到的知识。

在实验室认识了很多各方面的精英。

在实验室尽管ACM没人教你,你花费的时间会更多。

但你自己研究出来的东西会更有价值,让你印象更加深刻。

以后到工作岗位上去也一样,你不可能什么问题都问自己的同事,能解决都要自己去解决,实在是解决不了的在再问问别人。

希望下个学期能够参加一些程序设计的比赛,锻炼一下自己,使自己能够真正的进步。

自己计划在学期去参加比赛,从学长那边了解到要参加程序设计的经验:1)重视团队合作:ACM的灵魂在于算法以及团队合作,没有了团队合作,除非有超强的个人能力,否则是很难取得很好的成绩的,在很多情况下,一个人出错的概率远远超过2个人以上一起做题,而在比赛中,出一点小错和一次成功YES的区别是非常大的,不只有罚时,更是心理上的区别,所以保证良好的团队合作,对比赛是至关重要的,在我自己的比赛中,两次的比赛,一次合作的好,一次合作的乱,直接导致了金和铜的区别。

2)平时做好准备:在赛后颁奖的时候,亚洲区负责人黄金雄教授曾说,在地区赛中,要取得一个金牌,至少需要1000个题目的积累,银牌也需要500个,可见练习是ACM里非常重要的一个环节,很多小问题,不错过并自己改正过,是很难在比赛中发挥出来的。

而那些能走的世界舞台甚至拿下前几名的选手,都曾经作过2000以上甚至3000个题目,当然,题目的数量不能代表一切,质量也很重要,各种类型都做,难题,中等题混着做,对实力的进展有很大的帮助。

同时,一般高手都会有属于自己的库,可以是交流来的别人写的,也可以是自己写的,一般提议自己写过,不过需要多次验证正确性,如果采用别人的,肯定正确的代码,必须先仔细的看明白,才能在比赛中能够用上,做点小修改等等。

3)赛前调整好心理状态:在比赛前,如何调整好心理状态,睡眠不足,过度兴奋,是比赛中非常忌的事。

对于我本人,这方面存在着比较大的问题,赛前无法入睡,有类似情况的话,比赛时应该用点西洋参等提神的物品来弥补上精神不足的问题,吉林时,比赛前2天我都没能入睡,多亏了赛前集训队老师的西洋参,使得比赛中保持了一定的状态,到最后,头非常晕的情况下还能写出代码。

4)比赛时候注意细节:在比赛中,边界数据,数据范围等等同样重要,同时,注意别人的比赛情况,不要只管自己做,多注意别人做出了什么问题,并加以参考。

5)比赛的时候注意状态调整:比赛时,人是非常累的,同时,不能补充上午饭是非常大的一个身体考验,所以,ACM中,不只是比的能力,也很考虑身体素质,如何把自己的状态调整好,发挥出比较好的势力很有讲究,晕了吃点巧克力(不要是饭,面包等很需要消化的东西),多洗洗脸,可以让人尽可能的保持在清醒状态。

6)训练好的心理素质:ACM比赛中,成绩好的一定是高手,成绩差的却不一定都实力不够,即使有非常好的实力,比赛中失利也是非常正常的事,如何调整好赛后心情,虽然有时候对比赛已经没有影响,却比比赛本身更为重要。

还有在下学期开始学习一些网页制作;俗话说:不能把所有的鸡蛋放在一篮子里。

作为一个大学生应该了解更多的东西,这样你就业的机会就会比别人多。

这样就不愁找不到工作。

计划:先学一学HTML,找本自己能看懂的教材,浏览为主,不用记住所有的概念,把使用原理记住,然后用学CSS,方法同上;进而再花些时间了解一下javascript。

然后就可以用记事本尝试写几个网页。

同学告诉我“写网页”的捷径,就是上各大网站,把网页保存下来,然后打开保存下来的网页,点击右键→查看源文件,看看人家的网页是怎么写的,然后模仿他们的写法,不断规范自己的代码。

接下来该学一下Fireworks了,到网上找一些详细的实例教程,跟着它一步一步做下来,每学会一个实例就掌握了几项操作,慢慢的就会有自己的作品,很有成就感的,长期积累下来对自己的提高很有帮助。

学Fireworks主要是学图片处理,比如加一些效果,还有很重要的就是切图。

这时结合Dreamweaver进行学习,利用这些工具多做几个网页,就可以达到一定水平了。

相关文档
最新文档