自我总结的ACM从入门到拿牌的几大影响因素

在整理社团需要的准备材料时随手写的,想理理训练的思路。没想到越写越多,又可以水一篇文章了。

自身能力

基础知识的储备/ 技能树的建立

  • 基础知识其实就是考察的范围,比如银牌所涉及的范围是铜牌的基础上加很多算法的。想拿对应的牌子,就必须把对应的范围都尽可能地涉猎。如果忽略了一部分知识没有去学习,则一旦比赛出现了这方面的题,就无论如何都解决不了。
  • 获取知识的方法和经验
    对于一个新算法首先找博客和课程去学会,然后做一道模板题。
    而后这对这个算法刷一个专题(大概10~20道题目)

思维能力

从一个问题的角度,思维能力是在自己掌握的方法里面找到一个最合适的方法或多个方法组合起来解决问题的能力。
从一个知识的角度,思维能力是将一个知识点举一反三应用的能力。

锻炼思维能力的方法和经验

  • 首先你需要储备基本的知识,掌握基本的算法。

  • 锻炼思维能力的方法其实就是一个循环。首先你需要掌握一定的知识,然后去做这一定知识的思维练习题,然后你再掌握更多的知识,然后再做相应知识的思维练习题。

  • 对于基本思维能力的建立,需要养成一个习惯:

  • 每做一道题,都思考应该用什么方法。如果当场想不出,之后看题解恍然大悟,就需要去总结在看题时为什么没想到,应该从哪方面去思考才能想到正确的方法,最好把自己的总结给记录下来。

  • 多做题,多做有深度的题,少做水题。

  • 多与其他人交流思想
    直接交流和看对方的代码都是不错的选择
    不管是线上还是线下都很重要
    多汲取大佬的思想,自己才能成为大佬

编码能力

编码能力,说白了其实就是就是把一个想法实现的能力。

锻炼编码能力的方法和经验

  • 多做题,编码能力的提升非常依赖于刷题的数量。
    对于那些有想法却不会实现的题,要么是基础知识不过关,要么是写法有问题。补基础知识,看别人的代码,学习别人的写法。
    先在脑海中构建出程序的结构再动手写。

手速

这东西肯定不能通过打字游戏去训练提升。

  • 手速由两方面决定:
    一是真实手速
    二是写代码的习惯
    如果先思考后上手,并且有良好的编码习惯就可以节省很多不必要的改语法错误、debug的时间。

总结:

技能树决定总能力的广度。
思维能力决定了某方面能力的深度。
编码能力决定能否把方法用代码实现
手速和编码能力共同决定将方法实现所需要的时间。

比赛的经验

对于比赛的经验。
一是参加真实的比赛,不断从错误中积累经验。所以每次的赛后总结是很重要。
二是多阅读其他人的参赛经验总结,然后获取对应的参赛经验。

心态

心态要从做题和平时的比赛中去养成。
对题意难懂的题目要耐得住性子去读懂。
对于死活做不出来的题目要分析原因,一步步地去解决。
当然也要懂得放弃,对一道题目死磕太久也会影响做题的心态。

组队

与队友配合很重要,比赛时在能力不足的情况下也需要分工。

兴趣

兴趣很大程度上决定着训练的积极性。
就个人经历来看,打ACM的过程中最大的乐趣就是完成一道有挑战的题目后,那个绿绿的accept,那一刻会有极大的满足感,就像是打败了一个boss证明了自己实力一样。
  • 如何培养兴趣
    1. 加入这个圈子,比如各种群。
    2. 刷“水题”增强信心(这里的水题指在自己能力范围内的比较容易解决的题目),当你能力提高后会发现,以前你认为有难度的题目,现在已经可以轻松解决了,不过要少刷。
    3. 看别人写的博客,比如比赛经历什么的。
    4. 多打比赛,然后赛后与别人讨论,赛时可以感受到比赛的氛围,赛后可以吸收他人的想法,聊比赛中哪些有趣的做法、有哪些坑点,和感受大佬的厉害。

一些奇思妙想

不保证严谨性,看着开心就好

  • 打ACM就像是玩游戏不断打怪升级的过程。
  • 一道道题目就是一个个怪物。
  • 当你是新手时,你需要去打败一些最简单的怪物(入门水题),来熟悉这个游戏的基本玩法(获得最基本的编码能力)。
  • 过了新手村后,你会遇到各种各样奇怪的小怪(简单的思维题),虽然会感觉有些棘手,但还是能把他们消灭,并获得了经验(思维能力的提升)。
  • 在前期,每一关卡的怪物都有他们自身的独特弱点(某一类算法题),要打败他们就需要利用他们的弱点。因此你学习了针对这个弱点的技能(新的算法),而后打这类怪物变得简单多了。
  • 当然,每个关卡最终你都会遇到一个boss (对应类型的难题),最初你无论如何都打不过,所以你把这个关卡的怪物反复刷了好几次,对应技能的熟练度提升了(新算法的掌握),也获得了大量经验(对新算法的思维能力)。最终把这个关卡的boss击败了。
  • 有的时候你会进入一些副本,但那里的boss(综合题)特别难缠,可能需要你的好几个技能熟练度达到一定高度(多种算法的使用),比如有种怪物表面看起来毫无弱点,但在你使用了打表等技能后,发现他的弱点看起来就是递推式。但他还有一层大数,取模,除法的叠加防御,这时你灵机一动,使出long long 、扩展欧几里得求逆元 一举破防,于是你这几个技能的熟练度都上升了。
  • 有的时候服务器会举办活动,召集很多人组队来限时闯十几个特殊的关卡,每个关卡一个boss,服务器会根据每个队排名情况给予奖励,当你找到队友并获得名额后就参加了。这里面的怪物都是随机的,但大都是需要很高的经验值和运用各种各样的技能。这时候你发现跟队友一个打一个boss分别使用不同的技能好像更轻松(学会了组队配合)
  • 中期之后,你会发现更多关卡需要的技能比较难学习(难的算法),每个技能的掌握都需要花费大量的时间,但活动的举办时间可不等你把这些关卡慢慢打完。于是你和你的队友商量,每个人去攻克不同的关卡,这样就。(分工学习新的算法)
  • 待续…(其实是自己太弱了…)
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值