首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

别再问我为什么你敲的代码很水了!

春节一过,迎来了“金三银四”的招聘旺季,各个大厂开始进入了大面积招兵买马的阶段,现在正是程序员进入大厂的最佳时期。 你是否有心仪的大厂想要跳槽呢?趁着这个黄金阶段把握机会,一举进入大厂吧。 图片来自网络 大厂面试无外乎看三点,简历、笔试和面试。其中一些知名的大厂在笔试的时候最爱考察同学的算法能力。因为他们认为,只有掌握算法和数据结构,才能拥有处理复杂问题的能力。事实上确实是这样,算法能力强的同学,代码结构性更为严谨。 甚至有一些面试官,在面试的时候直接扔一道算法题让你来“手撕”。这就使得面试筛选变得更加“

04
您找到你想要的搜索结果了吗?
是的
没有找到

算法竞赛入门经典(第2版)(算法艺术与信息学竞赛).pdf

《算法竞赛入门经典(第2版)》是一本算法竞赛的入门与提高教材,把C/C++语言、算法和解题有机地结合在一起,淡化理论,注重学习方法和实践技巧。全书内容分为12 章,包括程序设计入门、循环结构程序设计、数组和字符串、函数和递归、C++与STL入门、数据结构基础、暴力求解法、高效算法设计、动态规划初步、数学概念与方法、图论模型与算法、高级专题等内容,覆盖了算法竞赛入门和提高所需的主要知识点,并含有大量例题和习题。书中的代码规范、简洁、易懂,不仅能帮助读者理解算法原理,还能教会读者很多实用的编程技巧;书中包含的各种开发、测试和调试技巧也是传统的语言、算法类书籍中难以见到的。

03

浅谈ACM算法学习与有效训练

一、什么是有效地训练?   很多ACMer入门的时候,都被告知:要多做题,做500多道就变牛了。其实,这既不是充分条件、也不会是必要条件。   我觉得一般情况下,对于我们普通学校的大学生,各方面能力的差距不会太大,在这种情况下,训练和学习的方法尤为重要。   其实,500题仅仅是一个标志,而且仅仅表示你做ACM-ICPC有一定的时间,算是入门了吧,而且这500道题目中自己独立思考做出来的有多少,半小时内做出来的有多少,看别人的题解做出来的题目有多少,半年后仍然会做的题目有多少........ 二、训练的目的是什么?   1、提高编程能力   2、学习算法,(读书,读论文,包括做一些题目验证)   3、准备好面临将到来的挑战(熟悉题型,调整心态)   4、启发思维。 三、关于算法学习的一些建议: <1>算法学习是ACM比赛所要推广或者要提倡的一个方面   记得曾经路过某人的blog,上面说他作比赛的时候遇到了一个dijkstra,他没做出来,然后评论到(大意):我才不会花时间去搞明白“这种”算法。 “这种”也许有可能是指:没什么实用性,对吧,这样我就不想评论了(又是有关科学和工程的讨论)。但起码有一点需要明确的:ACM-ICPC比赛时关于计算机科学的比赛,计算机科学是算法的科学,计算机算法中dijkstra有着重要的实际和启发意义,所以比赛一定要考。   你参加这个比赛,要拿奖,就必须学习这种算法。你也许觉得你智商很高,但ACM-ICPC比赛本身不是智力比赛,比赛就是要让你去学习这些东西,所以,如果你不想学的话,我觉得也没有必要参加。说道这,可能偏题有点远,但是希望以上的分析能得出这样一个基础结论:不想学好算法,那没有必要来比赛。 <2>用模板是不好的   现在很多我们弱校的ACM-ICPC选手比较依赖模板,说实话,我也很依赖,但是我起码知道一点,这样是不对的,某种意义上说,这是你没有把算法学明白的一种表现。而且也严重影响编码速度。在我参加过的亚洲区域赛和亚洲区域总决赛(EC Final),那些大佬们从来没有看过模板,全部现场敲。正常的比赛绝对不会考察模板题的,每道题都是3到5个知识点糅合到一起考察的。   我觉得敲代码的时间没有浪费,某大牛曾说:因为每次敲都有可能有不同的错误,所以不用模板是好习惯。我最开始学dancing link的的时候,自己敲出了代码,然后接下来的几道题部分参考了以前的代码,后来基本上是直接copy。现在,当别人问我dancing link算法或有关的题目的时候,我已经是一脸茫然。   所以,用模板是不好的,有时候由于某些原因可能你用了模板,但你起码要知道这要做是不对的,并且有机会要改正。 <3>需要深入学习   像 ACRush、zzy、ahyangyi…等等国家队的天才们,本身难以说我们与他们之间有什么可比性。但是他们的学习方法应该还是值得借鉴的,他们的学习方法当然我们得不到言传身教,但是从他们在国家队集训的论文中和他们搞完ACM-ICPC以后的轨迹中,可以有所体现。那就是:深入学习。   首先,我觉得ACMer学算法不应停留在看看代码实现这个层面,在算法思想上要有清醒的认识,在正确性分析上要也应该要有较好的逻辑。因为网上的代码的实现上的一些细枝末节很可能掩盖了算法本身有的简洁性、美感和思想。因而丧失了对算法整体上的一些认识。还拿dijkstra算法打比方,有些算法不是基于 dijskstra的直接建模,而是需要你修改这个算法,这时你对算法没有真正理解的话,也就一筹莫展了。   所以,要阅读论文和书籍,尤其与英文书籍,窥到它的本质。另一方面,只有这样,你学的的东西才能在ACM-ICPC以外,给你一定的启发——否则你会迅速忘掉它的。

02

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券