zoukankan      html  css  js  c++  java
  • 算法竞赛入门

    前言

    因为最近指导一些朋友入门算法竞赛,颇有心得 懒得以后复述,不妨写篇博客。

    适用于OI / ACM

    第零阶段

    建议使用codeblocks,vscode,sublime,vim,emacs等编辑器或者IDE。不建议使用dev!不建议使用dev!不建议使用dev!

    各大OJ介绍:OJ就是online judge,在线做题网站。

    第一阶段

    这一阶段主要是学习语法和简单的模拟。

    要求:

    熟练使用函数,结构体,高维数组,循环语句等。

    自我感觉能够把编程语言当一门工具来使用。

    掌握基础的debug方法,如输出调试等。

    第二阶段

    这一阶段学习简单算法。

    这里开始要明确算法竞赛中的几大板块:数学(数论,组合计数,概率期望,线性基等),图论,树论,字符串,数据结构,DP,其他。

    目标,掌握二分,枚举,dfs,bfs,树和图的储存方式,树的遍历,gcd,埃氏筛,简单线性DP,前缀和与差分。

    会使用桶,栈,队列。

    这一阶段主要是起到了一个引入和过渡的作用。

    第三阶段

    这里需要学大量的重要算法,同时代码能力会得到提高。

    需要学会的知识如下:

    数据结构:线段树,树状数组。

    DP:多维DP,树形DP。

    图论:最短路的三种算法,分层图,最小生成树。

    树论:树的简单信息统计(如深度,子树大小),树上差分。

    字符串:字符串hash,kmp。

    数论:gcd,exgcd,crt,线性筛素数,线性求逆元。

    组合计数:组合数,lucas定理。

    概率期望:简单的概率期望DP。

    其他:STL(set,优先队列,map),对拍。

    这一部分完成后,普通题目应该都不成问题。

    第四阶段

  • 相关阅读:
    使用jxl.jar操作Excel
    ThreadLocal学习
    ArrayList与Vector、HashMap与HashTable
    String, StringBuffer, StringBuilder比较
    ArrayList与LinkedList实现比较
    Java文件备份类
    Maven安装与更新
    Eclipse安装反编译工具JadClipse
    Linux关闭防火墙
    Hadoop简介
  • 原文地址:https://www.cnblogs.com/huyufeifei/p/14157842.html
Copyright © 2011-2022 走看看