荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: xsosx (I believe………), 信区: ACMICPC
标  题: 转贴一篇好文章,适合像我一样的新手
发信站: 荔园晨风BBS站 (Wed Apr  6 23:07:29 2005) , 站内信件

最近自己做题做得很郁闷,胡乱搜索看到一片好文章(摘自同济BBS):

Tongji Online Judge http://acm.tongji.edu.cn/
在各方人士的共同努力下现在越做越
好了。
在题目方面基本能达到训练一个新手的目的,并且中等水平的选手也能有一定的提高,高级
水平的选手也可以做一些难题,比如1133。

这里主要讲一下新手的进阶。侧重对TOJ题目的归类和提示。相信对新手能有一定的帮助。


前20题都是基础中的基础,着重考察选手对编程语言的熟悉程度,如果对pascal或c的使用
还不熟练的话做这些题可以帮助熟练编程。这些题也可作为C、Pascal的课程作业。如果觉
得做这些题有困难,那不要紧,只要用心看看介绍编程的书,肯定可以弄懂的。

做完前20题后要看一些基础的算法书籍,把基本的算法搞懂。像递归、二分、宽搜、深搜、
简单的图论、数论、简单的组合数学。重点根据书上的例题理解算法的实质,思想,能做到
有一定领悟。这时需要做一些题目来巩固了。

首先可以做搜索题,搜索是博大精深的,诸多细节技巧都需要靠平时的积累领悟,根据自己
练习的目的挑一些题练习。
然后可以做简单的数学题,对组合数学、数论有个大致的概念。
再然后可以做DP类题目了。DP也是非一日之功,练好DP就像练好了内功,这时可以做一些DP
的基础题,体会一下,然后做一些提高题,如果不会做,一定要自己想通为什么别人这样设
定状态数组,他的技巧在哪里。oibh上很多的国家集训队关于DP的论文是必看的。
图论里有很多基础的东西需要学习,先把图论里面基本的定义看懂,然后把经典的算法看懂
,比如最短路、生成树、割点、连通分量等等。如果不会做,一定要好好看书。

很多新手会问碰到不会做的题目怎么办。首先应该考察一下为什么不会做这题,如果是书本
上的知识点没掌握,那要赶紧把书本找来,仔细理解之后再来想这题。如果知识点基本都掌
握了,那么可以利用网络的资源,多搜索一下关于这题的讨论,看看别人是怎么想的,看是
否可以给自己提供思路。总之一条,要自己多开动脑子。重在理解这一题的算法,而不是只
知道算法,自己把它编程实现了就算了。对待算法和程序要用严谨的态度,没有搞懂的地方
要花力气把它搞懂,这样才能不断提高。

看书是必须的,而且也是迅速提高的最好方法,不要等到做题时才去理解书上的知识点,而
要对知识点有了充分的理解后再去做题,这样才能事半功倍,否则看到难题,从哪方面下手
的思路都没有。

关于刚保送进来的同学,在同济大都是noip一等进来的,绝大部分没有进过省队,所以你们
相比别的刚接触编程的同学有一定的优势,但这个优势相对于现在比赛的难度和深度来说是
不明显的,可能别人努力练习两个月就超过你了。必须认识清楚的是noip的难度和acm竞赛
的差距是很大的,上面我讲的这些可能你们都知道,但这只是刚入门。高级的贪心,300行
的宽搜,A*,STL,诸多的剪枝技巧,统计,查找,treap,对DP状态的优化,带集合的DP,
平面图,计算几何,数论......要学的东西很多。但我相信只要努力你们肯定会取得不错的
成绩。和别人比赛,其实是和自己比赛,考场上完全是实力的体现,会就是会,不会就是做
不出来。训练时间每个人情况不一样,长短不一,但重在看个人悟性,水平达到一定程度之
后会发现有质的变化,理解算法简直是小菜。

这里强调的还是个思维能力的问题,不是为了做题而做题,做题其实是为了训练自己的思维
能力和编程能力,从训练中能得到的最大的收获就是提升了思维,套用比较流行的一个词就
是“脑力”。这也是为什么说进省队是个标志,进了省队说明你前期有了一定的积累,和那
里的一些高手一接触自然自己的思路就大大开阔了,对于算法会有一个更深层次的理解。就
算只参加了省队的选拔赛,对自己的帮助也是很大的。用gush的话说,没进过省队就等于没
见过世面。

那大家一定达不到那些现今强人的水平吗?当然不是。强人不是天生就强的,也是从菜鸟做
起的,成功地原因只有一个--勤奋。他们的思维能力或者脑力不是天生就这样的。但随便提
现今的一个牛人,题量都是上千。他们默默地积累和严谨的态度才取得了现在的成绩。有人
说上千题,太恐怖了啊,我做一个题都得花几小时,有些想几天还做不出。一开始自然是这
样,知识点众多,考查范围广大,对这些现成的知识要慢慢消化,每个知识点都掌握后,做
只考这些知识点的题自然就快了。积累到一定程度后就会发现做题的乐趣,以前很崇拜那些
说“今天上课太累了,做几道题休息一下”的人,不知不觉,做题对我来说也成了最大的乐
趣。有些题只考查单一的知识点,有些题把几个知识点结合起来考查。比如先用平面图里面
的几个知识点,然后凸包求一下,然后DP一下,或者线性方程组解一下再搞个匹配等等,这
些题看上去很复杂,但若这些知识点都不折不扣地掌握的话,做这些题自然就像切菜了。题
目也是人出的,如果只看现成的这些知识点的话,出题者的思维也是有限的。

参加这个比赛对编程能力的提高也是大有好处的,十分钟上百行无错代码,快速实现逻辑较
复杂的算法,debug技巧......而且对语言的理解也能上好几个台阶。我们还没有迎来下一
次的编程技术革命,编程仍旧是有局限的,它强迫我们像计算机一样思考,而不是令计算机
像我们的大脑一样思考,这是我们需要花巨大的努力去克服的。很多人对我说的这句话可能
不太理解,至少感受不深。如果Debug的时间超过写程序时间的1/2,那就是失败的。一切都
要慢慢训练,持之以恒之后,拥有良好的编程习惯和风格应该是每个人所追求的。编程的境
界永无止境!

以前人们常说看书可以升级大脑,对于计算机及其相关专业的同学来说,参加acm比赛是最
好的升级大脑的方法,思维能力的提升可以让我们受益无穷,而编程的能力和技巧则会因为
编写大量的代码而大幅提高。或许今后再也没有这样一个机会能让你计算机水平飞速增长。
对算法和数据结构理解深入后研究计算机专业的其他课程有如“会当凌绝顶,一览众山小”
。所以低年级的同学全身心的投入进来是绝对有好处的。有一年多的积累就能小有成绩了。
只要坚持下来,踏踏实实,努力提升自身水平,一定可以实现自己的目标!

做acm看似是枯燥的,但一旦入了门,就会发现其中有无穷的乐趣,即使训练了不参加比赛
,对自己也是一个很好的提高。

have fun everybody :)



--

  I believe......
※ 来源:.荔园晨风BBS站 http://bbs.szu.edu.cn [FROM: 192.168.111.89]

※ 修改:.xsosx 於 Apr  6 23:08:25 2005 修改本文.[FROM: 192.168.111.89]
※ 修改:.xsosx 於 Apr  6 23:08:52 2005 修改本文.[FROM: 192.168.111.89]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店