noip学习过程

如何学习

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