如何学习
noip 学习的过程是一个学习算法的过程,同时也是练习题目的过程
第一个阶段:入门
这个阶段你的任务是掌握C++语言,学会最基本的代码编写能力,在这具阶段你主要是做水题,就是不需要算法,自己动脑能夠实现在题目,经过这种题目的训练,你能夠入门,学会了使用C++的语言和基本的计算机思维能力.题目量:30-50.
题目列表: 待加入
第二阶段:算法入门
在这个阶段你会学会基本的算法:
- 排序
- 冒泡排序
- 桶排序
- 插入排序
- 选择反序
- 归并排序 逆序对
- 快速排序 最学用
- 使用c++内部的sort
- 简单搜索
- BFS
- DFS
- 剪枝
- 简单贪心
- hash
- gcd
- 任意进制转换
- 高精度
- 二分查找
- 简单的数据结构
题目量:100-150
第三个阶段:更深入的算法和数据结构
上面的是入门的学习,经过上面的学习你已经形成的计算机思维方式(或者IOER思维方式),和普通的同学的之间形成了不同的思考模型(^_^!),下面会学习更深的算法.
- 搜索
- 双向BFS
- A*
- 动态规化
- 经典题目:LCS等
- 背包
- 树上DP
- 等各种变形题目
- 树
- 最小树
- 树的存入与遍历
- trie树
- 二叉查找树
- 等
- 图
- 图的存入与遍历:dfs,BFS
- 最短路
- floyd
- bellman
- dijstra
- spfa
- 割点
- 二分图匹配
- 简单的组合数学与数论知识
- STL学习
- vector
- deque
- list
- stack
- priority_queue
- map
- set
- algorithm 算法
题目量:300-500
第四个阶段:小成
上面的阶段都是打基础,学到最后前面所有的算法只是你手中的工具,在你实际解题的过程中,看出使用的什么算法的题都是水题,真正的题目解法是在一个时限内YY(意淫)出新的解法或者做一个畸形的变化转成一个有固定解的模型.这个时候你就会说:自己的大脑才是最强的算法工具.
在这个阶段,上面所有学过的算法(sensai有写的一个代码大全模版,制作中),打10-20遍,每个都透彻的理解,最后即使闭上眼也能打出来.
可以分类自己写的所有题目.
50行以下的代码,不用debug,可以心算找出错误. 100行以下的代码,2分钟debug.
写题目不在纠结算法,主要的时间放在想题解法是,能想出来,就能快速写出代码,快速构造数据,自己测试,优化.
第五个阶段: free
到了第四个阶段,你已经至少一个能不停走向更强的OIER,or,ACMER.
如果不在作为一个OIER,or,ACMER后,你能做什么?. 想学习其它的方面的知识,转向计算机体系的其它方面:逆向,加密,单片机,UI,WEB,server,—-等等.
上面的学习中最重要是你走完了这一条OIER道路,学会了运用思维,完善自我的过程.我相信你已经能达到自我学习,自我训练的程度.想转向其它的方面,都很简单,简单在于你已经知道如何去运用自我的思维.(一切以抺杀人学习能力的教育都是耍流氓,教育是培养学习能力,不是灌输)
有了计算机思维,学习计算机其它方面都不是很难:都是找资料–>看资料—>运用的过程
最后:学习英语真的很重要.
说明:
本文档还在完善中——-
http://hzwer.com/1234.html