一些建议:
PS:本文只是给大一准备主打ACM小白和不主打ACM又希望拿到一定奖项(非XCPC)(比如蓝桥杯等)的同学的建议,不是给已经专业ACMer的建议,ACM大佬看到请划走(膜拜膜拜)
PS:不建议小白盲目刷题,本人亲身经历,虽然刷题打比赛可以快速提高熟练度与思维能力,但是往往容易忽略了知识点的重要性,一段时间后就很容易达到瓶颈,难以提升。
一、确认要学的知识点
声明:本图片引自知乎用户“walker shi”,是ICPC东亚区总决赛裁判长的知乎账号。欢迎大家关注学习
原图链接:https://zhuanlan.zhihu.com/p/454647571?utm_psn=1800476414505525249
如有侵权,请联系我QQ(3563805651),将第一时间删除
这是知识点图。(如果你发现每次遇到一类题都不会写,也补不明白的时候,一定要先学知识点)
由于每年ACM难度都在增加,所以对于准备专攻ACM的小白们,图上的难度可能滞后了(就是图上金牌难度现在可能只有银牌难度,以此类推),但是还是不妨碍对这知识点表去系统学习算法。
二、边学边实战
千万别等到所有知识点都学完才去实战,因为你永远都可以更完美,如果你这么想的话那你永远也准备不好。我的建议是每周至少两次。但是也千万别忽略了知识点的练习。
三、学习方法
对于知识点的学习方法:我的建议是:
1.先弄懂知识点:
可以通过直接去B站或者搜索引擎和学习网站(我会放在文章末尾的附录里面,可以通过目录直接跳转)的视频,结合刷题网站的板子题(完全靠该算法解决的,也叫裸题)去学习,不懂可以看别人的代码,或者板子题的经典题解。
ps:要是实在没法弄明白,可以先抄别人的代码(平时),先跑出来(不是直接复制粘贴,是手敲,要确保可以默写),后面边用边理解,用到一定程度你就会恍然大悟。如果是板子,理解了就行,可以保留到电脑上,比赛的时候打印下来(很多比赛可以带纸质材料),典型的就是(二分法、快速幂、并查集、最大公约数等等)(平常打codeforces和牛客什么的可以直接复制粘贴、做非板子题也是)
2.去做相应知识点的非板子题
在学习完知识点之后,可以通过刷题网站去找到相应知识点的题目。当前刷题和比赛网站有codeforces(刷题、比赛)和acwing(刷题、网课)、洛谷(刷题,有基础题单和各种知识点的题目,板子题也有,而且可以查看题解(不要一上来就看题解)需要锻炼独立思考能力)、牛客网(里面有小白赛和各个学校的校赛,还有一些大型赛事的题目)、蓝桥云课(里面有小白赛,可以刷题和比赛(比赛意义不大))(蓝桥网站不是很推荐)(但是蓝桥杯我非常推荐去打,毕竟相对题目简单,而且好拿奖,而且规模相对较大)
3.刷题和比赛网站的简单讲解
PS:codeforces在篡改猴上有个脚本叫codeforces Better带翻译如图:
还可以自己从(codeforces简称CF)Vjuge上创建一个比赛和小伙伴们一起练习。
在edge浏览器里还有一个插件叫CF Analytics如图
可以分析你写的题目运用了哪些算法,以及你写的题目的难度分数,这可以有效避免你一直刷简单题自我感动(我之前就是哈哈哈)。效果如图(这是CF榜一tourist的主页)
总的来说,洛谷是题目最全面的刷题网站,适合学习,CF适合打比赛和补题,牛客网有各个学校的校赛也很有意思,有时间蓝桥云课的小白赛可以打打(如果你是刚刚上大一并且想走ACM道路的话)但是千万别在上面放太多的时间(玩玩就行),小白的话网课建议买Acwing上的网课
如图这个比较好入门:
别的不推荐(这个课他会让你拼团购买,实际上24小时自动拼成功)
这里面不仅有课程,也有对应的题单,和题目讲解视频,还有判题机。如图:
非常适合新手小白。
然后就是牛客了
这个多校训练营的题目也非常不错,但是牛客上面的网课别买!!!
在讲讲最重要的codeforces,如图:
这是比赛页面(如果你的页面是英文那就是你的codeforces Better没开翻译,调一下就好)
常规比赛分4个难度分别是div1 div2 div3 div4(div1+div2)是介于1和2之间的难度
按难度排序1最难(小白打不了,除非之前基础很好)
4最简单,很多是语法题
比赛会和王者荣耀巅峰赛一样有积分(叫rating)
新号前面6场是定级赛,其他正常。
div4 是最基础的语法题,很适合小白和新手刷分(但是手速要快一点哦)
div3 比较简单,可以好好抓住机会练练。
div2对有一定基础的小白来说也不是不能打,第一题和第二题往往是思维题,熟练之后也可以很快开出来(偶尔也能开第3题),但是容易掉分哦(最好还是多打打,实在不行想上分后面还可以开小号,不想开小号也可以去补题,写之前div2的题目,毕竟比赛时间一般都在晚上10.35开始,打完都1点多了(比赛根据俄罗斯的时间)。codeforces的rating超过2000分以上的话甚至去大厂招聘的时候都可以写在简历上了(当然看你是应聘什么岗位)(一般算法岗有优势)
总结
最后做个总结,小白要兼顾学知识点和刷题和打比赛,不能一直准备着不去赛场上打磨,也不能总想着打比赛,不从根本上提高自己很容易进入瓶颈期,总之,正确学习算法,希望大家都可以在自己的道路上越走越远,祝各位奋起扬帆乘风破浪,披荆斩棘前程似锦!!!
附录
codeforces网址:Codeforces
牛客网网址:牛客竞赛OJ_ACM/NOI/CSP/CCPC/ICPC_信息学编程算法训练平台 (nowcoder.com)
洛谷网址:首页 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
Acwing:AcWing