论ACM ICPC_Ruins He

这段时间老是有许多新人向我问到ACM相关的问题。比如它与工作的关系,对我以后的工作到底有没有帮助?还比如说第二年的训练计划应该是什么样的?还有的孩子问到,我寒假玩儿的一个寒假,又该怎么办?

看到这些问题,我自己也感慨万千,一眨眼自己在这方面也涉猎了两年多了,经过那一段时间的纠结,最终还是决定第三年继续。大家选择ACM的理由的很多很多,为了以后方便找工作?充实生活?巩固学科基础?不管是为了功利心理也好,还是纯粹的兴趣也罢,最后共同的结果就是我们选择了ACM作为自己大学生活的一部分。

我们可以从ACM中学到什么?

首先,作为一个团队活动,我们可以从中感受到团队合作的魅力,只可以感受团队合作给我们带来有那种不一样的感觉,当然,也可以从中认识更多的志同道合的朋友。

其次,ACM是一个学习的过程,对我来说,在这两年里,我自己学到了许多上课不会涉及的东西,自己吸收其它方面知识变得更快了,对于即将从事IT产业的我们来说,学习能力是一个非常重要的能力。

最后,要取得好的成绩,我们要掌握许许多多的知识,而大部分的知识,都是计算机学科、数学学科的基础,比如说微积分、线性代数、概率论、数据结构等等。

ACM需要的是坚持而不是三分钟热度

大一开班会的时候提及到过大学四年的规划,记得当时选这个的人挺多的,坚持半年的也很多,但是到了大一下学期,一个寒假回来,坚持下来的就没有几个了,而到了最后参加讲座的就更少了。这说明的什么?可能是没有兴趣吧,ACM是一个需要坚持的竞赛活动,不是简简单单的混个三、四个月就可以有成绩的,只因为付出了,才会有后来的回报。

很久以前就听学长们说了一句话:ACM ICPC不应该成为大学生活的全部,但是我们却时常后悔没有把我们的全部投入进去。很多人常常在失败的时候抱怨自己的队友,把失败归咎于自己的团队,当然也有人把所有的责任推到自己的身上。我们要记住,ACM是三个人的活动,不是你一个人的,更不是你队友的。三个人坚持下来了,我们要的不一定是得到辉煌的成就,最主要的还是那深厚的友谊加上和朋友们一起奋斗的过程。

关于ACM的种种小事

交流是重中之重

成为集训队的成员已经有两年的时光了,在每年新的一轮训练开始时,最经常见到的就是一个新人的队伍,甚至是有一定配合的老队伍的三个人,各自做各自的,从始至终都没有什么交流,说的最多的就是这题过了,这题挂了,或者是你先下来,我先写另外一道,等等。切记一点,ACM是三个人的活动,并不是1+1+1那么简单的,如果三个人各自为战,这和个人活动有什么区别?1+1+1<1是常常遇到的事儿,出现这类问题最主要的原因就是各自为战。

做事要有一个整体规划

到现在,我见到的最多的解题策略,包括我自己曾经用的,都是reading-thinking-coding-thinking-coding-debug-thinking-debug-submit。对于一个中档题来说,这个过程可能需要30到50分钟不等,往往很多人觉得50分钟和30分钟是没区别的。在过题之后估计整个过程,许多人会把实际上是50分钟的时间估计成半小时,然后就觉得时间充裕。不管是做ACM也好,平时做事也罢,有一个非常重要的环节,那就是Programming,这可不是Programmer相关的单词,而是Dynamic Programming中的Programming,它是规划的意思,相同的一个ACM问题,如果你在上机前多花5分钟规划,你可以在coding和debug阶段省下很多的时间。记住,理想的解题过程应该是reading-thinking-programming-coding-debug-submit,甚至对代码能力好的人来说,debug这个环节可以省略。

克服对新知识的抵触心理

第一年训练结束之后,队伍解散,我也开始新知识的储备,那时候对DP有着很大的抵触心理,后来在寒假逼着自己看了几篇DP优化相关的论文,结果虽说不上喜欢上了DP,至少对DP的抵触心理小了很多。世上不存在什么不可能学会的知识,我们要做的仅仅是培养兴趣而已。

代码越短越好 or 写的代码越长说明自己越牛?

我想一定的不少人觉得代码越短越好,或者代码越长说明自己越强。很明显这种想法并没有任何的科学性。coding是一门艺术,拿coding和写文章作对比,可谓大同小异,作为一个团队的成员,我们要做的是使自己的文章可读性更强,而不是刻意地去压缩、扩充自己的代码。解题的过程,个人能力差异最小的就是coding在过程,差异最大的是thking和debug的时间。代码比别人的长了点儿,coding多花了时间,但是debug的时候队友可以给自己更多的帮助不是么?

为什么我投入了这么多却没有得到回报?

很多人,包括我自己,都遇到过这类问题。当遇到这类问题的时候,有的人会选择退却,有的人会选择反思,当然也有人选择不管不问,使用以往的方式继续下去。遇到这类问题,我们要做的事就是找到问题的根源,我想最大的一个原因,就是不够专注。何谓专注?专注不是一整天只吃一顿饭,即使逃课也要训练,专注也不是花大量的时间,只学了本来一个小时就可以学会的知识。高中的时候,很多同学问我为什么做作业比他们快,其实高中的时候效率高的原因仅仅是不在做作业的时候听音乐而已(我发现自己没法做到那样的状态了,训练的时候没法做到原来那么专注,有点可惜)。在训练的时候,我习惯把电脑静音,拔去散热器的电源,我不希望散热底座风扇转动的声音影响自己的思考,虽然我的思维很慢。有的人(有时候我也有这样的毛病)喜欢在训练还没结束的时候就在群里得瑟,或者在训练一半的时候发现剩下的题目自己肯定没戏,就放弃了。我觉得这都不是一个好的习惯,养成好的习惯可以让你有更大的成就的。

谈谈ACM的学习氛围

我常见到很多人在群里抱怨题目看不懂,当然也不排除这些题目描述真的写得很渣的原因。如果一套题,特别是好题,你发现自己很多题都看不懂意思的话,那只能说你有点浮躁了。

虽然不愿意这么说,但这却是事实,做ACM最需要的是一个氛围,一个平常十分融洽,训练的时候却严肃的氛围。其实我不喜欢训练的时候开玩笑,以前不少老队员和我说:何老师,你的表情太呆板啦,和我们一样嘻嘻哈哈的多好。我可能习惯了,平时都不会嘻嘻哈哈的,但是我并不反对平时没有训练的时候大家活跃一点,毕竟大家是在一个集体之中,需要更多的沟通交流。我也不反对平时一起玩游戏、一起听音乐、杀人、三国杀,娱乐活动是生活不可缺少的一部分,这我还是知道的。但是在训练的时候得瑟、逛社交网络、在QQ空间里瞎逛就不可取了。

凡事都不会是绝对公平的,不管在什么情况下,不公平的事可谓是屡见不鲜了。copy他人的代码(或者自己以前写的代码),太过于乐于助人等等。我想很多人在前期会有想不出来马上就看题解的习惯,慢慢演变成了这样,当他意识到事情的严重性的时候,却很难改正了。甚至有人并没有意识到这里面对自己的危害有多深,而到了最后的赛场才后悔莫及。

SCL到底是好是坏?

SCL,大部分人称其为模板模块标程等,对很多人来说,可能是比赛场上必不可少的武器吧?不过我的观点是能不用就不用,大多数人使用SCL的原因是其中的代码并不是他自己实现的,有可能是google的,或者其他队员、学长实现的。我并不反对这种行为,但是比赛比的就是代码实现能力,至少,你要对这份代码相当熟悉才行。

之所以不推荐用SCL,主要的原因是它会阻碍代码能力的提升,习惯用SCL之后,你会发现自己写代码越来越容易写挂,1Y率大幅度下降,随着自己学的东西越来越多,积累的SCL越多,代码能力就下降的越快。SCL仅仅是为了正式比赛心安的一个工具,而不是训练的工具。

ACM与大学生活

作为ACMer,我认为ACM给我带来最多的好处,那就是充实了我的大学生活,让我喜欢上了看课外书。看书不能囫囵吞枣,否则你可能连原理都掌握不了。此外,最重要的是实践,一个新的算法,要自己试着实现。当然,实现之前一定要理清步骤,另一方面,我们还需要通过和他人的交流,让自己对某方面的知识的理解更进一步。

还有一个和我们大学生活相关的话题,那就是GPA。很多人因为ACM把学业扔了而挂了很多科,这可以说他们把时间全花在ACM上了么?当然不能。曾经问过学长类似的问题,得到的答案就是GPA相比ACM来说,公司虽然看中能力,但是更看中基础课的掌握程度,而GPA就是表现这个的最方便的方式。GPA说明了一个人对待学习的态度,也表现了一个人的学习能力。总而言之,我的建议地能不挂科就不挂科,毕竟挂科后要花更多时间去折腾自己的学业。

最后,想提及一下作息时间的问题,大一大二作息时间一天比一天混乱,特别是周末或者课少的时候,本人熟悉的ACMer中,有90%的是夜猫子,每天2、3点睡觉都是常事,而这样的作息时间导致了白天精神萎靡的情况。最近一直11点睡7点起,上课没有犯困过,感觉良好。

不管怎么说,既然要把ACM作为自己大学生活的全部,那么就认真地投入吧,好好享受这个过程才是最关键的不是么?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/381819.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

查询分析器下如何备份数据库

查询分析器下如何备份数据库backupdatabasemsdb todiskd:\msdb.bakOK搞定转载于:https://www.cnblogs.com/CnKker/archive/2006/09/26/515318.html

Inside Dynamics Axapta源代码赏析(四)

第八章:Developing Applications Using Business Connector 这一章的代码主要演示如何通过Business Connector与Axapta交互在Dynamics Axapta的客户端安装目录中找到Microsoft.Dynamics.BusinessConnectorNet.dll这个文件,添加到VS.NET的工程中.1.HelloWorldBC.csclassHelloWor…

uva 1629——Cake slicing

题意&#xff1a;有一个n行m列网格蛋糕上有一些樱桃&#xff0c;每次可以把蛋糕一刀切成两块&#xff0c;最后使每块蛋糕上都有一个樱桃且切割线总长度最小。 思路&#xff1a;区间dp&#xff0c;记忆化搜索整个过程&#xff0c;然后分区间从上到下&#xff0c;从左到右&#x…

信号之SIGCHLD

信号之SIGCHLD SIGCHLD信号是子进程结束时发出来的信号&#xff0c;可用于在程序中捕获子进程结束的信号然后用wait函数将子进程资源回收。 优点&#xff1a;不会使父进程一直阻塞在wait函数处。 #include <signal.h> #include <stdio.h> #include <string.h&g…

uva 242——Stamps and Envelope Size

题意&#xff1a;给定最大贴邮票上限和若干个邮票组合&#xff0c;求最大的连续邮资的一个组合&#xff0c;如果有多个&#xff0c;按字典序输出最大的一个。 思路&#xff1a;对每一组邮票&#xff0c;求出当邮资为i时需要邮票数的最小值d[i]&#xff0c;边界为d[0]0、d[i]>…

js常用

//关闭,父窗口弹出对话框,子窗口直接关闭this.Response.Write("<script languagejavascript>window.close();</script>");//关闭,父窗口和子窗口都不弹出对话框,直接关闭this.Response.Write("<script>");this.Response.Write("{to…

信号之kill-raise

信号之kill-raise kill(),raise()都是信号发送函数 #include <signal.h> int kill(pid_t pid, int signo); kill函数向指定的进程发送信号。 int raise(int signo); raise函数向本进程发送信号,相当于kill(getpid(), int signo). #include <sys/types.h> #include…

Google 代码搜索

今天在CSDN上看到的消息&#xff0c;google推出了CodeSearch的服务&#xff0c;上去一测试&#xff0c;吓死我了&#xff01; 代码的秘密全无了&#xff01; http://www.google.com/codesearch/ 你可以试试你的代码看看&#xff01; 比如&#xff1a;搜索以下&#xff1a;on er…

uva 10723——Cyborg Genes

题意&#xff1a;输入两个A-Z组成的字符串&#xff0c;找到一个最短的串&#xff0c;使得两个串均是他的子串。 思路&#xff1a;最长公共序列问题。当i和j相等时&#xff0c;dp[i][j]dp[i-1][j-1]&#xff0c;不等时就是max(dp[i-1][j],dp[i][j-1]),如果当前的统计的数量大于s…

信号之函数的可重入性

信号之函数的可重入性 在调用某个函数过程中出现中断信号&#xff0c;且改信号处理函数中再次调用该函数&#xff0c;访问全局、静态变量的函数是不可重入函数。 前后数据不一致&#xff0c;函数是不可重入的&#xff0c;特点&#xff1a;函数中使用全局变量或静态变量。 前后数…

ASP.NET 中处理页面“回退”的方法

我们在编写基于 ASP.NET 的应用程序时&#xff0c;如果代码执行出错或检测到异常&#xff0c;一般会提示用户“返回”或“回退”&#xff0c;或者在多步操作、列表/详细的查看界面中&#xff0c;也会给用户提供回退到上一页面的链接&#xff0c;对于这种情况&#xff0c;大家很…

uva 1631——Locker

题意&#xff1a;有一个n位的密码锁&#xff0c;每位都是0——9可以循环旋转&#xff0c;每次可以往上或者往下旋转一下&#xff0c;然后给定初始状态和末状态求最小旋转步数。 思路&#xff1a;递推&#xff0c;dp&#xff08;i&#xff0c;x&#xff0c;y&#xff09;表示翻到…

socekt编程-select

摘抄自 https://blog.csdn.net/lovekun1989/article/details/41042273 https://blog.csdn.net/Ctrl_qun/article/details/52524086 分为无select和有select版本&#xff0c;无select只能一个服务端一个客户端&#xff0c;有select能一个服务端对应多个客户端。 无select&#x…

uva 1632——Alibaba

题意&#xff1a;直线上有n个点&#xff0c;其中第i个点的坐标是xi&#xff0c;且他会在di秒后消失&#xff0c;阿里巴巴可以从任意位置出发&#xff0c;求访问过所有节点的最短时间&#xff0c;不能输出-1&#xff1b; 思路&#xff1a;01背包问题&#xff0c;dp&#xff08;i…

忙活了,暂时歇笔

估计近期活忙起来&#xff0c;有活忙就好&#xff0c;埋头不用想什么。所以暂时歇笔。估计有一段时间才更新。 转载于:https://www.cnblogs.com/zuolun/archive/2006/10/25/540051.html

CentOS7.6安装MYSQL8.0的步骤详解

转载 https://www.jb51.net/article/174536.htm

uva 10163——Storage Keepers

题意&#xff1a;给定n个相同的仓库&#xff0c;有m个人轮流值守&#xff0c;第i个人的应聘者的能力为pi&#xff0c;如果应聘者看守k个仓库&#xff0c;则仓库安全指数为pi/k的整数部分&#xff0c;求使得所有最小安全系数最大且工人pi最小的设计。 思路&#xff1a;二分01背包…

李开复:21世纪7种人才最抢手

21世纪最需要哪些人才&#xff1f;昨&#xff08;22&#xff09;日&#xff0c;Google副总裁、Google大中华区总裁李开复博士作客电子科技大学&#xff0c;以《21世纪最需要的七种人才》为题给大学生们带来了一场充满睿智而又不失幽默的演讲。李开复说&#xff1a;“21世纪&…

不进行格式化将U盘快速转换为NTFS格式

这里&#xff0c;我们要用到Windows自带的convert工具。 打开开始菜单&#xff0c;在“所有程序”“附件”中找到“命令提示符”&#xff0c;然后右击&#xff0c;选择以管理员身份运行。 可以输入convert /?查看用法。 先确认一下U盘的盘符&#xff0c;此处为G。 输入convert…

博客园培训OOAD的课程概要

于众不弃&#xff0c;由我负责博客园培训中OOAD的课程。因涉及内容较多&#xff0c;所以我整理了一个课程概要式的内容提要&#xff0c;希望大家能够给予宝贵的意见和指导。OOAD课程大纲 概述 透视OOAD的背后—软件学习之道、术、器 该部分讲述软件学习之路上存在的问题。将软件…