Frank的OIer之路

 

我搞算法竞赛也是比较晚的(相比那些市队大佬而已),我是从高一才开始在二中开始跟王老师学信息竞赛的,那个时候我是一个什么样水平的选手呢?

几乎是零基础,什么都不会。

不过,我唯一有的,也是后来一直支持着我从零开始变成“大佬”(当然不能跟市队的大佬们比啦),就是兴趣

我认为,如果你想在搞算法竞赛这条路上走的比较远的话,兴趣,即对编程的热爱,是每一个学编程的人必须具备的。因为在学编程的过程中,你会遇到各种各样的困难。比如开始学的时候,一些知识点比如:递归,动态规划,高级数据结构……这种东西刚开始学是非常难的,至少我在当时学的时候遇到了巨大的困难。当时我理解这玩意理解了好半天才搞懂。如果你没有兴趣,那你可能就半途而废了。

那我为什么会对编程那么感兴趣呢?其实在高一开始正式学之前,也有过学习编程的经历,不过大都是自学,而且学的只是那些皮毛的东西。

小学4年级的时候,我爸给我报了一个Pascal的班,这是我第一次接触编程。但是当时我就完全听不懂,什么变量啊,布尔什么的完全无法理解,然后自己写的程序基本是抄旁边同学的。结果当时和我一起学的那些同学,在初中的时候已经可以编非常复杂的程序了。有一次他们还写了一个游戏,是关于什么老师大战学生的,然后他们几个同学就聚在那里乐在其中。而我还是什么都不会,当时我特别羡慕他们。

我七年级的时候就找了一本书开始自学VB,当时我也有点数学基础,终于弄明白了什么是变量,并且自学的时候能听懂视频上的内容了,自己也能写一些简单的if,for语句出来了。我花了数天时间写了一个迷你小游戏,叫士兵大战路人。虽然那个时候我已经会写代码了,但当时接触的都是非常浅层的东西。知道高一的时候我才第一次知道算法这个东西。

这些简单而稀少的if,for语句怎么能组合出有如此复杂功能的程序,就是因为语句是简单的,算法是千变万化的。只有当你开始学算法的时侯,你猜从真正意义上开始深入地,内行地学习写程序。

从高一开始学信息竞赛的,才是我真正意义上系统地跟着一个老师学习写程序。所以那个时候,积蓄已久的对编程的热情在这个时候被激发出来了。上课的时候我一定是非常认真地听课,什么打游戏啊,玩手机啊都是不存在的。因为是学竞赛嘛,老师的讲课速度都是比较快的,但是老师教完一个知识的时候我总是感觉不过瘾,还想学更多的新的东西。老师也很鼓励我们自学,他给我们发了很多电子书,然后我就把它传到学校发的pad上面,上课无聊的时候看。我除了老师给我们的电子书之外,还自己会去网上找书看。当时收藏了很多关于写代码的书。虽然很多都是粗粗地看而且很多地方都看不懂,但是我在其中找到了快乐。有些题目做不出来的时候,就把题目大概记在心里,然后上课无聊的时候拿出来想,课间的时候跟同学讨论思路。我现在想想都不太敢相信,原来这就是我当时学信息干出来的事情。而且信息题目不像其他学科的题目,它是比较有趣的,贴近生活的,这样是为什么我比较喜欢信息的原因之一吧。

当时跟我一起学信息的同学有好多,但学到后来很多人都陆陆续续放弃了,因为有些算法刚开始学的时候确实有难度。我当时也遇到过很多困难,但是我从来没有想过放弃,因为我觉得这就是我喜欢的东西。

这就是我当时学信息的状态,就这么一直学了一年,基本上该会的都会了,勉强可以去上场比赛。

当时比赛的目标也没想过拿一等奖,想着那个二等不错了,就算拿了三等我也能接受。因为我并不是为了要拿一个奖才参加信息竞赛的,我是为了学习编程,这是我自己的兴趣。在学习的过程中找到属于自己的快乐,经历了这样学习的过程对我来说比竞赛的成绩更加重要。如果单纯是为了拿奖而学习的话,在碰到困难的时候就容易放弃。信息竞赛中也有很多运气成分在里面,它的结果并不完全代表了你的真实水平,我觉得只要在学习过程中真正用心了,运气总会是好的。

高中学信息竞赛的经历大概是我这三年来的最高光的一段经历,他给我带来了很多,也对我的影响很大。

信息竞赛里的题目是属于哪种比较灵活的。它对你训练解题思维的帮助是很大的。对于解决一个问题来说,分析这个问题是非常重要的。怎么去分析它,从那些角度去分析它。这些都要经过训练才能形成成熟的思维。

信息竞赛的知识点比较多,因而它对你的学习能力,尤其是自学能力是一种极大的磨练。

我在经历了这种磨炼之后,它也开阔了我的视野。因为在学习的过程中,你不在是学习高中的知识,你的知识面已经达到大学的范畴了,甚至更高,了解到最顶尖的技术。第二年参加市队选拔赛的时候,可以接触到很多大佬们,他们大多数年龄都比我们小,但是编程能力都比我们要强上很多。它可以让你知道山外有山,人外有人,有机会接触到OI界顶尖的选手。你在高中的学习就不仅在课本的知识本身,而是有一个更加开阔的眼界和心胸,我觉得这比你把高中的题刷得滚瓜烂熟要重要许多。

之前初中的时候,我一直不知道以后要做什么职业,但经历了这样的学习之后,我已经非常清楚自己大学想学什么专业,以后想要干什么,就是学计算机,搞人工智能,将来有机会在微软等巨头公司搞设计研发。而我身边的其他同学,题目还在为大学学的专业苦恼,根本不知道以后想干什么,对将来的职业什么的都比较迷茫。

我身边也有同学大学想学计算机的,但是他们认为高中应该先把课内的东西学好,课外的知识应该放在大学学习。我认为这是一种鼠目寸光的做法。首先,你如果不在高中先了解计算机专业,你怎么知道这就是你喜欢并且想从事的专业呢。而且,我认为兴趣应该是一种习惯,而不是一个作为长远的目标。既然它是你的兴趣,那么你自然就会有一种学习它的欲望,如果现在你没有想学习它的欲望,那其实它并不是你的兴趣。而你在进入大学学习的时候,你的基本功已经非常的扎实,可以去钻研更加深入的知识,而那些在高中没有基础的同学,学基本功都会很费劲,他身边的同学都是编程大佬,这种差别在学习成绩上是非常显著的。

我想高中里一件很重要的事情就是找到自己真正喜欢的事情,发现自己的特长以及闪光点,为之后的大学学习乃至职业生涯做好铺垫。这样到时候就不用听其他人口中说学生们好,或者是为了赚钱而去选择某个职业,而是跟从自己的内心想法,找到自己最喜欢做的事情。而对于我来说,这件事情就是编程。

如果你已经想学习信息竞赛,那我们应该怎么样去学习,我给大家一些建议:

1. 首先你要喜欢它,在学习的过程中找到乐趣,并且为了你的兴趣,要肯花时间,下功夫。(可以借鉴我的学习经历)

2. 在做题的时候要善于整理思路:可以问自己诸入此类的问题:这道题是怎么被想出来的?如果我自己独立思考,我怎样才能让自己想出这道题来?其他人有没有更好的方法?怎样去分析一道题?把自己在题目中所学到的整理出来变成自己的解题套路宝典。

3. 乐于学习新知识,发现新东西。信息学是个年轻的行业,其中的知识更新速度很快,接受新知识是最基本的能力和习惯。

4. 学习其他人的代码,尤其是大佬的代码。这可以让你找到处理问题最高效的代码和解决思路,对于新手提升是非常有好处的。当然不要无脑抄袭,这没有一点帮助。

posted @ 2018-06-30 19:40  Frank的成长之路  阅读(286)  评论(0编辑  收藏  举报