0
点赞
收藏
分享

微信扫一扫

ACM入门攻略(紫书入门,不间断更新)


声明:本文仅供参考,并且假定读者已经可以熟练运用C语言及其相关知识(大神请走开,谢谢配合)。

目录:一.ACM入门的相关准备(书籍,OJ,编程语言,常用网站或工具)

           二.入门阶段的学习路线及其策略(全文以紫书为例)

               1.紫书第五章语言篇写题策略

               2.紫书第六章第七章写题策略

           三.日常训练方法,及成长路线小结(个人观点)

一.ACM相关准备

    书籍推荐使用刘汝佳的《算法竞赛入门经典》(废话)🙃

     网站推荐使用vjudge,这个基本是全网OJ的集合,紫书上的题在这上面都能找到,真心很好用的哈O(∩_∩)O

     编程语言:C++(这个其实也是入门第一步,暂时不会也没关系,下面会讲)。😄

     英语能力:如果英语很勉强的话也没啥,慢慢学,先学会用网页翻译做题,慢慢来。(话说编程语言不基本都是英语嘛⭐)

     必备能力:搜博客,搜博客,搜博客!!!!(重要的事情还想再说亿遍),这个是ACMer的必备技能,作为初学者一定要学会自我度娘,这个哪里不会搜哪里(●'◡'●),很多优质博客会解答你的绝大部分疑问,这个技能会贯穿ACM的学习始终,只看书是行不通的!!!!切记,切记,切记,阿弥陀佛,善哉善哉。😁

二.入门阶段的刷题策略

  ⭐⭐⭐⭐⭐通宵们,通宵们,注意啦,注意啦,敲黑板,画重点:一!定!要!从!第!五!章!开!始!看!前四章真想写的话把整本紫书写完再看也不迟,否者真的很浪费时间的有没有!!!(风暴破音)😈

咳咳咳,不好意思,刚刚有些失态,哈哈哈,下面讲重点。

1.紫书第五章,语言篇C转C++

首先呢,要晓得一点点的是,C++你这辈子是学不完的(😆,所以呢,我们要搞定其实只是C++的基本语法及STL库中容器及函数的应用,这里推荐超级可爱萌萌哒的柳婼姐姐的《从C语言转C++简明教程 v5.0+》,给宁​​《从C语言转C++简明教程 v5.0+》 – 柳婼 の blog​​

下面就好说了,直接从紫书5.2做题,没错,干,就完了。不过注意要边看文档里函数用法边做题,基本上这部分题,一个题就对应一个容器,文档里哪个容器看一遍就可以开题了,不会正常,看题解(前面说过了,不会就搜博客)看懂了抄上去就行了,虽然有些敷衍,不过没事,这些东西以后会反复用,慢慢就会的哈。

另外,5.3可以不看(大致一扫,即可走你),在入门阶段,你暂时是用不着这个的,学过Java写大整数会方便很多,后面数论也用到了再看不迟。

至于5.4 em...........,看情况吧,题解能看懂把代码抄上去就行,入门阶段这部分不强求,实在不行,就跳过去。(虽然憨憨我当时没人指导,一道题有的一怼就是一天,愣是搞完了,感觉没个卵用........)

5.5习题同理,按要求写,不会就搜题解(搜博客),看懂了,能自己写就自己写一遍,不行就抄上去。以后你慢慢就会的。

2.紫书第六章,数据结构入门(看起来吓人,其实很简单)😝

6.1,6.2可以直接跳过,不写(虽然我写了,但我觉得真没必要),这章最重要的其实是深搜(DFS)和广搜(BFS)。

6.3会了就写,不会就抄(前提你得看懂题解,实在看不懂题解过也行),就这么简单。

6.4⭐⭐⭐⭐⭐⭐注意啦,介个是重点中的重点,老老实实把DFS和BFS的代码理解透,每一个细节都不要放过。但是又要注意了,6.4.3的拓朴排序和6.4.4的欧拉回路可以跳过(因为一些图论的东西会与这些东西结合,现在就写其实效果不好,学到图论再研究,比如链式向前星(一种建图方式)会与这些东西一块用)

6.5习题部分嘛,按要求写8道就行。

(PS:先到这吧,其实把上面博主写的这些东西搞完,基本也就完成了入门的最初阶段了,以后有时间再更,拜拜啦,哈哈哈)

3.紫书第七章,暴力枚举——专题化训练的开始💪

如果聪明努力的你已经看到并按上面的要求写到第七章,恭喜你,从这一刻起,你已经一只脚迈进了ACM的大门。当然,这一切才刚刚开始。第五第六章其实都在为后面打基础,不同于上面两章,接下来博主不会对每章的小节或习题做过多评价,主要在于训练方法及专题的推荐练习。😊

关于习题(咦,刚刚不是说不说了么🐷),跟前面一样,能做则做,关于7.3的子集生成不用强求,一些枚举方法,在你后面接触状压之类的相关专题的时候自会明白,桥到船头自然直,渐入佳境会有时。吼吼吼~~

咳咳咳,别笑了,说重点。这章其实说是暴力,其实更是搜索,在这一章里,你会接触到一种叫做回溯法的东东,后面还会有迭代加深搜索,当你把这些东西看完的话,先别急着去看第八章,你有一个搜索专题请注意查收。在ACM的初期阶段,专题化的训练是最有效的提升能力的手段,这里推荐kuangbin的简单搜索专题。对了,专题可以在vj网站的contest板块里面搜到,不一定要kuangbin的,其他专题也可以写的,这里的专题训练会陪伴你很长一段时间,要学会渐渐适应哈😝。

嗯~ o(* ̄▽ ̄*)这一章的话,搜索专题写个二三十道题就可以结束了,不要放松警惕,我们的征途是星辰大海,一切,才刚刚开始!

4.紫书第八章,贪心,二分尺取单调栈(这部分紫书没有强调,没事,慢慢给宁讲讲)😄

好吧,没啥好讲的。紫书过完,把贪心,二分尺取单调栈专题(注意这是两个专题)刷掉就完事了。只是贪心其实也可以等到第九章动态规划写完再刷也行,因为会有一点点联系。

在学这个专题的时候要着重理解两个点,一个是二分法的边界问题(​​这是博主自己写的一篇博客,遇到二分查找的边界问题可以看一下​​),另一个是要体会单调有序思想在二分尺取单调栈甚至贪心问题中的应用。

5.紫书第九章,动态规划——害怕😱

咳咳,先讲一些题外话

在学习这一章之前,请务必把前面的提到的所有专题还有紫书上的部分例题写完。基础打好,十分重要!!!然后呢,其实在这个阶段,其实已经不用只写紫书了(甚至不写也行,毕竟紫书不是ACM的必经之路,但是至少有一定的指引作用)。经过前面联系,现在的你至少已经掌握了stl容器及相关函数的使用,搜索,二分尺取单调栈以及贪心思想。这是非常推荐你去打codeforce的div3,基本都是一些思维题,最多有一些贪心思想,这对你解题和思维能力都是特别有帮助的。(​​如果你还不知道什么是codeforce,点这里,非常全的cf游玩攻略​​)。

好了,先说学这一章的策略建议:一边专题化训练,一边打cf的div3,不断提升自己的姿势水平。

em.....那下面开始正式说这一章吧。但就动态规划这一个知识点而言,大家应该先做好心理准备,因为动态规划要学的东西,要刷的题,要花的时间要比前面那三章的总和还要多的多,个人觉得,就专题分类而言甚至可以与后面的数论,图论相提并论。

动态规划其实可以细分为很多类型的专题进行学习,最简单的简单dp,然后就是一些比较难的树形dp,还有状态压缩(这里面好像还有一类特殊的状态压缩,主要是解决棋盘问题的,不过这部分在蓝书上,紫书上没有)。

入门建议其实并不是从简单dp入手,个人其实比较建议先学背包九讲,背包问题其实是动态规划中很常见的一类题型,vj上对应的还有背包九讲的专题,光这一部分估计就有四十多题了,把这一部分写完基本就对dp有了一个大致的认识。

然后就是刷简单dp专题,树形dp专题,状态压缩专题。。。。。。。。

以上就是本章学习建议,动态规划的关键在于理解题意写出状态转移方程,这一点需要大家仔细感悟。

em......后面就是数论和图论了,有空在更吧,毕竟博主现在对于这两部分的理解和认识还不足以去帮助大家更好的学习这部分知识,拜拜┏(^0^)┛!

——————————————————更新分割线————————————————————

害,先说一些废话吧,后面会谈一下博主对于数论图论的一点理解。

时间过的真快,这篇博客写于博主大一寒假,因为博主是河南某财经政法类超级acm辣鸡弱校,学校集训队并没有什么集训,当时博主私下里自己组织了一些同为大一的同学进行训练,因为以前从来没有系统训练的先例,所以博主当时大一根据自己大一上学期从零基础开始的的算法学习经历写了这边博客,以便供那些跟博主同校的同学训练使用。现在博主已经大三上学期快过了一大半了(今天是2021/11/18)。经过将近两年时间,我们学校的集训队算是开始慢慢有了点集训队的样子,周周周赛,大一新生赛等等,算是一改之前的样子重新开始追赶大佬的步伐了吧。

下面我们先简单说说数论图论。

先说句实话,现在去更新这已经鸽了两年的博客我觉得有点搞笑。因为这两年下来,我跟队友把知识体系完善后,发现我最擅长的是DP,最擅长图论和数据结构的是另外一个队友,我们的数论其实都比较一般吧(这些我们都学了也都刷了很多题,之后后来发现各有所长罢了)。

当时我确实学完紫书的数论和图论(网络流除外,网络流是我后来在某Wing学的),不过我觉得我当时学的很没有方法,效率很低。所以这里不会跟上面那些一样跟大家把题目画画,就说一下学习方法吧。图论数论这块,我觉得板子很重要,初学的时候一定要把板子能在极短时间内不带报错的打出来,反复敲打。比如最短路算法,tarjan,还有求组合数的那些基本方法,各种筛等。当时我刷紫书时,一个题只看懂敲了一遍,我现在觉得这样学习效率极差,在入门阶段我觉得反复敲同一份代码提高自己的码力时最终要的。至于平时的比赛,我遇到的数论最常见的时组合数,这个板子其实带着就行(但是第一次学一定要能非常熟练敲出来),其次还遇到过一些高斯消元,线性基这些,但是遇到的次数也不是很多,我觉得这些东西在初学阶段可以先不当成重点。板子熟练敲打是提升码力的很好的方法,板子过后其实就是思维上的训练,到了这一步,其实大家的acm也基本完成了入门了,有自己训练的思考和感悟了吧。

最后写一些自己口胡的话作为这篇博客的结尾吧。

这篇博客第一次发布时,我只是一名刚入大学的大一新生。说实话我当时很迷茫,毕竟我们真的是那一种弱的不能再弱的学校了,说出来你们可能不信,我刚进大学那时候我们最好的成绩只是XCPC省赛的铜牌,蓝桥杯B组最高只有一个16级的国三。我曾经上网搜过很多acm的资料,也看到过关于弱校劝退的忠告,但是我最终依然坚持了自己所热爱的算法竞赛并跟我大一找的队友一起全身心的投入了其中。说实话,能够坚持自己所热爱的选择,去不断的努力的感觉真的很好。到目前,博主的acm生涯其实还没结束,甚至按某些大佬的标准来说才刚刚开始。这两年,我们第一次参加蓝桥杯B组拿了我们学校的首个国一国二(大二上),第一次参加A组拿到了首个国二国三(大二下),第一次参加ICPC省赛拿到第一个银(我知道对大佬来说省银也是辣鸡),大三上第二次参加CCPC拿到了第一枚省金。我们仍然很菜,我们学校甚至还没有一块区域赛的牌子,从某种意义上来说,我们仍然是acm弱校,我们甚至还不能称自己有过真正的acm牌子(毕竟现在一般acm牌子都是指区域赛,我们还是这个圈子下水道位置的弱鸡选手罢了)。不过我现在已经大三了,这个时间点的我们,对日后的未来都另有了除了ACM之外的规划,我不知道在这大学最后的日子里我们是否可以百尺竿头更进一步,但是这些年的努力一切都是值得了。

最后,我其实也没想到,当时我大一随便敲的博客后来会有这么多人点赞收藏甚至评论或私信我去更新剩下的数论和图论。我只能说作为一个弱校练起acm的弱鸡选手我受宠若惊。对于在看此篇博客的同学,如果你也曾经跟我一样,或身处弱校在了ACM犹豫不决抑或是已经下定决心踏上ACM这段极富趣味性与挑战性的征程,我都只想告诉你,请权衡利弊后选择自己所热爱的方向,以颤抖之身追赶,怀敬畏之心挑战,谁无劲风暴雨时,守得云开见月明,请相信我们的青春终不留遗憾!

举报

相关推荐

0 条评论