也算是接下来二十天的复习计划吧

仅止于联赛难度左右

基础算法

  • 字符串

    • char[]

      • cstring
      • memset()
      • 输入无&
      • gets(), fgets(stdin, ,);
      • strcmp, strcpy, strcat
    • string

      • string
      • cin, getline(cin,s)

      ios::sync_with_stdio(false); - > 只能用cin

    • 子串匹配

      • 暴力匹配
      • hash哈希
      • trie树 字典树
      • kmp
      • AC自动机 (trie树上做kmp)
    • 回文串

      • 暴力匹配 n^2
      • manacher 马拉车 O(n)
  • 数论

    • gcd() 求最大公约数 / 最小公倍数 辗转相除法
    • 快速幂 任意一个整数转换为 2^a+2^b+2^c
    • 求质数
      • 普通
      • 素数筛
        • 埃氏筛法
        • O(n)欧拉筛
    • 乘法逆元
      • 用一个递推式 求一个结果
      • 题目要求取模
      • 递推式里有除法运算 不能直接在每一步取模
    • 排列组合
      • 求组合数 C(n,m) = n! / m!(n-m)!
      • 组合数可以用递推 (杨辉三角形)
    • 离散化
    • 分治
    • 扩展欧几里得
    • 矩阵乘法
    • 进制转换
    • 位运算
  • 排序算法

    • 选择 冒泡 排序
    • 快速排序 (不稳定)
    • 归并排序 逆序对
    • 桶排序(去重)
    • 重载运算符
  • STL

    • string
    • queue
    • deque (双端队列)
    • stack
    • priority_queue
    • map (映射)stl的哈希表, 需要重载运算符号
      • 每次操作O(logn)
    • set 集合,会去重
    • vector
    • bitset
      • bool vis[] = true/false. 1 byte = 8 bits
      • 只用一个bit储存1/0
    • lower_bound(), upper_bound(),
    • sort
    • unique
      • 只能在排好序,升序的序列用
      • 会把所有重复的元素,移到最后去
      • ==,cmp
  • 高精度

搜索

  • 深度优先 (可行性问题)

    • 迭代搜索 (深度/求步数)
    • 记忆化搜索
    • 剪枝 / 各种黑暗剪枝 (套广搜来剪枝)
    • 启发式搜索
    • A* / IDA
  • 广度优先 (求步数)
    • spfa
    • 分层图

## 暴力算法

​ - 枚举

  • 模拟
  • 随机化

递归/递推

  • 一维递推

  • 二维递推

  • 写暴力搜索,打表,找规律

  • 矩阵快速幂 优化

贪心算法

二分算法

动态规划

  • 最长不下降子序列

    • 拦截导弹 O(n ^2 )
    • O(n log n )算法*
  • 背包问题
    • 背包九讲
  • 普通DP
    • 递推比较像
    • 比较复杂
    • -> 先暴搜
    • -> 找规律 注意各类参数 1-i i-n
  • 状压DP
  • 树形DP

图论

  • 度 欧拉回路
  • 拓扑排序(可能跟DP结合)
  • 最短路算法
    • floyed 暴力
    • dijkstra
      • pq优先队列的优化(推荐)
    • spfa 判负环(求最大路>判正环)
  • 强连通分量
    • korasaju

      • -> 正dfs + 反dfs
    • tarjan
      • low, dfn
  • 二分图匹配 (求最大匹配)
    • 匈牙利算法
  • 树上算法
    • 树的三种遍历方式
    • 最小生成树
    • LCA 最近公共祖先
      • tarjan
      • 倍增
    • 树链剖分 -> 区间修改/查询

数据结构

    • 单调栈
  • 队列

    • 单调队列
  • 链表

    • 图论 -> 邻接链表
  • 并查集

  • 左偏树

  • RMQ

    • 莫队(算法)

    • 前缀和

    • 差分

    • 树状数组

    • ST表

    • 线段树

      • lazy_tag
      • 可持久化线段树
        • 主席树

签到题100分拿满

DP/递推 -> 暴力(模拟,搜索,贪心) 20 ~ 50 , 打表++

码农搜索题 --> 50+

数论相关 --> 先算, 暴力

图论相关-->

  • 树上

    • 倍增
    • 树链剖分
  • 图上
    • 遍历
    • 拓扑序
    • 图上获得的数据再DP

数据结构 暴力 30-50, 正解可以多花时间/换角度

二分 / 贪心

贪心/二分/搜索/dp递推

NOIP 2015 - 2018

存算法/数据结构模板(复习不熟悉的,写不出来的算法)

CSP2019知识点整理的更多相关文章

  1. ACM个人零散知识点整理

    ACM个人零散知识点整理 杂项: 1.输入输出外挂 //读入优化 int 整数 inline int read(){ int x=0,f=1; char ch=getchar(); while(ch& ...

  2. Android 零散知识点整理

    Android 零散知识点整理 为什么Android的更新试图操作必须在主线程中进行? 这是因为Android系统中的视图组件并不是线程安全的.通常应该让主线程负责创建.显示和更新UI,启动子线程,停 ...

  3. vue前端面试题知识点整理

    vue前端面试题知识点整理 1. 说一下Vue的双向绑定数据的原理 vue 实现数据双向绑定主要是:采用数据劫持结合发布者-订阅者模式的方式,通过 Object.defineProperty() 来劫 ...

  4. kafka知识点整理总结

    kafka知识点整理总结 只不过是敷衍 2017-11-22 21:39:59 kafka知识点整理总结,以备不时之需. 为什么要使用消息系统: 解耦 并行 异步通信:想向队列中放入多少消息就放多少, ...

  5. JSP页面开发知识点整理

    刚学JSP页面开发,把知识点整理一下. ----------------------------------------------------------------------- JSP语法htt ...

  6. JS知识点整理(二)

    前言 这是对平时的一些读书笔记和理解进行整理的第二部分,第一部分请前往:JS知识点整理(一).本文包含一些易混淆.遗漏的知识点,也会配上一些例子,也许不是很完整,也许还会有点杂,但也许会有你需要的,后 ...

  7. css入门知识点整理

    css入门知识点整理 不要嘲笑我这个蒟蒻..例子来源:w3school css其实就分为两个东西,一个是选择器,另外一个是声明.声明定义了某个对象的属性的值,这都是html的内容.重点要关注的是选择器 ...

  8. activity生命周期知识点整理

    activity生命周期知识点整理 Activity: 是一个应用组件,用户可与其提供的屏幕进行交互.窗口通常会充满屏幕,但也可以小于屏幕并浮动在其他窗口之上. 一个activity的什么周期: 启动 ...

  9. 【Android 面试基础知识点整理】

    针对Android面试中常见的一些知识点整理,Max 仅仅是个搬运工.感谢本文中引用文章的各位作者,给大家分享了这么多优秀文章.对于当中的解析,是原作者个人见解,有错误和不准确的地方,也请大家积极指正 ...

随机推荐

  1. CSS 预处理语言之 Scss 篇

    简介 1. Sass 和 Scss Sass 和 Scss 其实是同一种东西,我们平时都称之为 Sass:Scss 是 Sass 3 引入新的语法,其语法完全兼容 CSS3,并且继承了 Sass 的强 ...

  2. Windows10+YOLOv3实现检测自己的数据集(1)——制作自己的数据集

    本文将从以下三个方面介绍如何制作自己的数据集 数据标注 数据扩增 将数据转化为COCO的json格式 参考资料 一.数据标注 在深度学习的目标检测任务中,首先要使用训练集进行模型训练.训练的数据集好坏 ...

  3. Java基础学习(七) - 异常处理

    1.异常概念 异常指的是程序在执行过程中出现的非正常的情况,导致JVM的非正常停止.在Java中,异常是一个类,产生异常就是创建异常对象并抛出一个异常对象. 异常指的并不是语法错误,语法错误,编译不会 ...

  4. Xshell、Xftp 5、6 解决“要继续使用此程序,您必须应用最新的更新或使用新版本”

    今天打开Xshell.Xftp,突然弹出“要继续使用此程序,您必须应用最新的更新或使用新版本”. 后来经过一番搜索发现,XShell配置文件中写入了强制升级时间,这个版本是2017年12月27日发布的 ...

  5. 使用lombok中的log

    idea中安装lombok插件 引入lombok依赖 <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --> ...

  6. uniapp 用户拒绝授权再次调起授权-语音识别、微信地址、附近地址

    小程序重构,采用 uniapp 框架.记录一下踩过的坑.关于用户拒绝再次调起授权,及如何识别语音识别.微信地址.附近地址的处理. 语音识别 组件 语音识别,小程序只有录音功能,若要识别录音文件,常规做 ...

  7. 【TencentOS tiny】又有一个操作系统开源

    新闻 2019年9月18日,腾讯宣布将开源 自主研发的轻量级物联网实时操作系统TencentOS tiny.相比市场上其它系统,腾讯TencentOS tiny在资源占用.设备成本.功耗管理以及安全稳 ...

  8. Git版本控制之ubuntu搭建Git服务器

    Git是一个开源的分布式版本控制系统,可以有效.高效的处理从很小到非常大的项目版本管理.使得开发者可以通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库,也可以将代码提交到Git服务 ...

  9. hihoCode 1075 : 开锁魔法III

    时间限制:6000ms 单点时限:1000ms 内存限制:256MB 描述 一日,崔克茜来到小马镇表演魔法. 其中有一个节目是开锁咒:舞台上有 n 个盒子,每个盒子中有一把钥匙,对于每个盒子而言有且仅 ...

  10. plSql使用流程

    1. 下载PLSQL developer.instantclient_11_2, 下载地址:https://pan.baidu.com/s/1_MjmIT4nUzsQ7Hi8MCrs1A, 备注:此安 ...