CSP2019知識點整理

本文作者MiserWeyte

也算是接下來二十天的複習計劃吧

僅止於聯賽難度左右

基礎算法

  • 字符串

    • 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

存算法/數據結構模板(複習不熟悉的,寫不出來的算法)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章