为什么讲如何做题?
- 浪费时间刷几千道水题毫无意义。
- 做真正有用的题目。
- 在一道坑爹题上浪费大量的时间是十分没有性价比的。
- 真正有效的训练在一年内就能成为很强的选手,而一味的磨蹭和颓废4,5年也就那样。
- 成功的路并不拥挤,因为大部分人都在颓☺
做题的目的
- 做题的目的是学到新的东西以及锻炼代码能力,而不是盲目刷OJ的rank,那没有任何意义。
- 提高算法能力(想出做法的能力,分析问题的方法等等)
- 提高代码能力(写出正确的代码的能力)
- 提高调试能力(将错误的代码改对的能力)
我对于OI比赛的题目的看法
- 对于省选到NOI来说
- 大部分由于做过类似的,不用想就能解决。
- 之后的大部分顺着题目进行一些简单的分析,就也能转化成做过的问题。
- 套模型。
- 学习更多的解题模型,可能具体也可能抽象,要多加思考。
在训练过程中如何做题
- 选择一个好的OJ/TC/CF <-优秀的题目来源
- 适度而不过量的思考<-节约时间
- 如果做不出来,在看了题解之后,总结自己做不出来的原因是什么,以完善自己今后的做题方法。
- 做题方法是一个很抽象的概念,需要经验的积累(和一定的智商?)
一些建议:提高代码能力
- 代码能力很大程度上取决于经验,你可能觉得这种可能需要大量的练习,但是其实也是有捷径的,那就是参考别人的代码。
- 最佳的方法是找一些可能比较难写的题目(APIO 2010 寻路, APIO 2011 kunai,CTSC 2011 杀菌计划挺多的),自己很可能写不出来,这时可以参考别人的代码,搞明白那些细节都是怎么处理的,
- 优秀的代码风格能够极大的提高代码能力。
在比赛中如何做题?
- 分析问题的方法是什么?
- 不是凭运气猜出做法,而是根据一定的思路从容的得出解法。
总结如何做题
- 做题说白了就是建模和解决模型的过程。做不出来可能有两个原因,一个是模型建错了,一个是对模型了解不够。前者说明分析没有到位,后者说明知识不够扎实。
- 对各种模型有清楚的了解,这样才能轻松的做题,真正的高手不一定智商很高,但是建模能力一定很强。
分析问题的方法:我的一些经验
- 从简单的情况开始分析:经典方法,对原题没有思路,那么分析问题的简化版。
- 经典例子:找出字典序最小的解,那么我们先分析怎么找出一个解。
- 人的思维很大程度上跟关键字有关系,比如一个题目怎么想都不会,有人跟你说“容斥”,你可能瞬间就会做了。不妨列出对于这类问题已知的一些解决方法关键字,思考思考能否做。
原作者:HFLS-WJMZBMR