算法竞赛系列 | 为什么要学算法竞赛?怎么学?

3个月前 (11-21 15:48)阅读4回复0
lrj
lrj
  • 管理员
  • 注册排名2
  • 经验值131425
  • 级别管理员
  • 主题26285
  • 回复0
楼主

读者拿到那本书的第一觉得可能是:那本书实厚。接下来他有点忐忑和迷惘:那本书固然厚,但是它有价值吗?它的内容和风气合适我吗?还有其他的一些问题。下面做一个详尽的解答。

01

为什么要学算法竞赛

算法竞赛是计算机相关竞赛中影响更大的分收。目前国内影响大的计算机算法类竞赛有全国青少年信息学奥林匹克竞赛(NOI)、国际大学生法式设想竞赛(ICPC)、中国大学生法式设想竞赛(CCPC)、蓝桥杯全国软件和信息手艺专业人才大赛(软件类)、中国高校计算机大赛-团体法式设想天梯赛等。每个竞赛每年的参赛者,少则几万人,多则十几万人。

在大学里,与算法竞赛相关的课程有“计算机法式设想”“数据构造与算法”“算法阐发与设想”“法式阅读与编程理论”“算法与法式设想理论”“算法艺术与竞赛”等。

在算法竞赛中获奖有良多益处。在学校能够获得奖学金,保研时获得加分。结业找工做时更有用,一张算法竞赛的获奖证书

是用人单元揣度求职者才能的重要根据。算法竞赛遭到学校、学生、用人单元的重视和欢送。

进修和参与算法竞赛,是通往出色法式员的捷径。竞赛的获奖者根本上都生长为超卓的软件工程师,而且有良多人是IT公司的创业者。例如当前热门的主动驾驶公司小马智行的结合开创人兼CTO楼天城,是2009年ICPC全球总决赛第二名;元戎启行公司的员工大大都是ICPC的金牌队员。

算法竞赛在以下几方面临IT人才培育提拔起到了关键感化:

● 编写大量代码。代码量间接表现了法式员的才能。比尔·盖茨说:“假设你想雇用一个工程师,看看他写的代码,就够了。假设他没写过大量代码,就不要雇用他。”Linus说:“Talk is cheap,show me the code.”大量编码是出色法式员的根本功。算法竞赛队员想获奖,普及需要写5万~10万行的代码。

●掌握丰富的算法常识。算法竞赛涉及绝大部门常见确实定性算法,掌握那些常识不只能在软件开发中得心应手,并且是进一步摸索未知算法的根底。例如如今十分火爆的、代表了人类将来手艺的人工智能研究,涉及许多精深的算法理论,没有颠末根底算法操练的人底子无法参与。

●培育提拔计算思维和逻辑思维。一道算法题往往需要综合多种才能,例如数据构造、算法常识、数学办法、流程和逻辑等,那是计算思维和逻辑思维才能的表现。

● 培育提拔团队协做精神。在软件行业,团队协做十分重要。像ICPC、CCPC如许的团队赛,把对团队协做的要求放在了重要位置。一收步队的3小我,在同等程度下,共同默契的话能够多做一两道题,把获奖品级进步一个层次。他们在日常操练中通过持久磨合,互相领会,做到合理分工、优势互补,从而发扬出更优的团队力量。即便是蓝桥杯和NOI如许的小我赛,队员在进修过程中互助互学,也发扬了团队的关键感化。

02

为什么选用那本书

读者的期看老是很高的。

假设读者是一名算法竞赛的初学者,他十分期看有一本“神书”。读完那本“神书”之后,他或者在参与大公司的算法题面试时自信满满,或者参与算法竞赛时代码喷涌而出,或者在日常工做中能用巧妙的算法处理现实问题……前辈们向他选举了一些好书,他看了书,做了一些例题,他觉得本身学到了良多算法,掌握了良多竞赛身手,但是碰着现实问题,或者参与竞赛时,他仍是觉得很晕,发现那些书和例题似乎都用不上。神书在哪里?

当他跨过初学者的门槛,他会熟悉到如许的“神书”其实其实不存在。那往往不是书的问题,而是他对书的期看过高了。一些算法竞赛相关的教材确实写得很好,也有很好的口碑,能够说是进修算法竞赛的必读书。但是要将书上的常识转化为本身的才能,需要颠末大量的操练,正如陆游诗中所说:“纸上得来末觉浅,绝知此事要躬行。”对应到编程那件事上,有两个重要的进修过程: ①进修典范算法和典范代码,成立算法思维;②大量编码,让代码成为本身大脑思维的一部门。

算法竞赛的进修难度颇高,它需要一名参赛者掌握以下才能: 丰富的算法常识、快速准确的编码才能、灵敏的建模才能。

进修算法竞赛产生了一个天然的成果:颠末持久深进进修并在算法竞赛中得奖的学生,都成立了对本身计算机编程才能的自信,并能顺利成为超卓的法式员。

算法竞赛如许高难度的进修显然不是一蹴而就的。算法竞赛的进修者分为三个条理:初学者、中级队员和高级队员。本书勤奋搀扶帮助读者顺利渡过从初级到高级的进修过程,期看读者看过本书之后,能说一句:“那本书固然不神,但是还不错!”

本书是一本算法竞赛“大全”,讲解了算法竞赛涉及的绝大部门常识点。书中对应的部门也合适那三种条理的学员,陪同他们从初学者走向高级队员。

初学者。一名刚学过C/C++、Java、Python中肆意一门编程语言的学生,做了一些编程标题问题,成立了编码的兴致,对进一步进修有自信心和动力,期看有一本介绍算法竞赛常识点的书批示进修,那本书的初级部门正合适他,搀扶帮助他领会根底算法常识点、进修模板代码、操练根底题。颠末如许的进修后,他很可能获得蓝桥杯省赛三等奖,以至更好。不外,他仍没有获得ICPC、CCPC铜奖的才能。

中级队员。中级队员顺利地跨过了初学者阶段,他证明本身已经走上了成为出色法式员的道路。中级队员契合如许的画像:熟知编程语言,编码得心应手;他做过几百道根底算法题,而且预备陆续对算法竞赛倾慕投进;他有了情投意合、程度相当的队友一路进修朝上进步;他碰着了进修瓶颈,计算思维还不敷;他只能做简单题和一些中等题,对难题无从下手。中级队员可能获得蓝桥杯省赛二等奖、一等奖,也差不多有ICPC、CCPC铜奖的程度。本书的中级部门能搀扶帮助他进一步掌握算法常识、进步算法思维才能、操练较难的标题问题。

高级队员。他们获得了蓝桥杯国赛二等奖或一等奖,以及ICPC、CCPC银牌或金牌。那些奖牌是“高级队员”的标签,他们已经足够被称为“超卓的法式员”,在就业市场上非常夺手。本书的高级部门能搀扶帮助他们进一步扩展常识点,加强计算思维。

03

本书内容介绍

本书内容的难度涵盖了初级、中级、高级,下面临本书的章节按难度做一个划分。

本书内容的展排以常识点的讲解为主,而不是一本习题集。所以,书中的例题次要用于共同常识点,大多开门见山,不消太多建模,即所谓的模板题。但是赛场上的竞赛标题问题为了增加迷惘性和考验参赛者的建模才能,一般不会出模板题。读者需要做大量的操练,才气把常识点和模板代码实正用起来。就像一个剑客,刚学剑的时候,剑是他的身外物;成为高手的时候,剑是他身体的一部门,人剑合一。

本书涉及良多复杂难解的常识点,需要极大的毅力和决心才气进修掌握。此中烧坏最多脑细胞的,例如杜教筛、动态树、DP优化、组合计数、后缀主动机等,让人心悸。若何进修?我用一个词往返答:“勤能补拙”,以此与读者共勉。

04

若何利用本书

读者能够按上述难度分类安放本身的进修。一名勤奋的竞赛队员,他的进修步调可能如下:

大一,进修初级常识点,做500道题摆布,次要是根底题。参与蓝桥杯大赛,争取三等奖或二等奖,得奖之后就成了初学者中的佼佼者;才能强的以至能够申请参与ICPC、CCPC、天梯赛等团队赛。

大二,进修中级和部门高级常识点,陆续做500~1000道题,中级标题问题和综合标题问题。陆续参与蓝桥杯大赛,争取省赛一等奖;参与ICPC等团队赛,获得铜牌。成为中级队员。

大三,陆续进修高级常识点,做综合难题。参与蓝桥杯国赛并得奖;参与ICPC等团队赛获得银牌或以上。成为高级队员。

书中除领会析常识点外,对每个常识点都给了定见的习题,但是没有对那些习题停止难度分级,原因如下:①读题也是很好的操练,假设读者做题前被告之标题问题的难度,可能会影响读者根究的乐趣;②读题之后,读者根本上能本身揣度标题问题的难度 ③有的标题问题难以分级,那些题或者建模难而编码易,或者建模易而编码难,或者逻辑易而编码烦,如许的标题问题是难题、简单题,仍是中等题?考虑到那些原因,标题问题的分级仍是留给读者本身揣度吧。

05

本书的特征

在做者的另一本书《算法竞赛进门到进阶》(清华大学出书社)的媒介部门,曾确立了四个写做目标:

● 算法构想:一点就透,名顿开。

● 模板代码:构造精致,清晰易读。

● 常识系统:由浅进深,逐渐推进。

● 赛事相关:参赛秘笈,高手体味。

那四点仍然是做者在本书中勤奋到达的写做目标。

做者晓得通俗人进修的盲点,写出的解析通俗易懂, 让初学者也随便进修理解,不至于卡在某些脑筋急转弯的处所。让下里巴人能赏识阳春白雪,那是做者写做的根本原则。

本书勤奋显示算法的精华。书中对绝大部门算法、例题都停止了建模阐发、复杂度阐发和比照阐发,对它们的构想停止了素质上的解析,提纲挈领地显示了它们的核心思惟。

本书严谨、深入地解析常识点。例如杜教筛、莫队算法,做者联络了那两个算法的创造人杜教、莫队,请他们审核了有关的内容。每个算法对应的中文名和英文名,也查阅了大量文献,争取摘用权势巨子的表述。本书所讲解的都是成熟的数据构造和算法,那些常识绝大大都都源自海外学者,有关的名词需要从外文翻译成中文。

为便于进修,做者为本书的每个末节录造了教学视频,对算法构想停止了精要的描述,视频总时长900分钟。此外,做者还供给了大量代码,对每个算法给出了模板代码,对典范问题和重要例题给出了完全代码;每行代码都颠末认真整理,争取成为“模板”,代码不多很多,也不贫乏关键内容。

《算法竞赛》系列推文正在连载中,欢送继续存眷!

扫码优惠购书

0
回帖

算法竞赛系列 | 为什么要学算法竞赛?怎么学? 期待您的回复!

取消