HackMD
  • Prime
    Prime  Full-text search on all paid plans
    Search anywhere and reach everything in a Workspace with Prime plan.
    Got it
      • Create new note
      • Create a note from template
    • Prime  Full-text search on all paid plans
      Prime  Full-text search on all paid plans
      Search anywhere and reach everything in a Workspace with Prime plan.
      Got it
      • Sharing Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • More (Comment, Invitee)
      • Publishing
        Everyone on the web can find and read all notes of this public team.
        After the note is published, everyone on the web can find and read this note.
        See all published notes on profile page.
      • Commenting Enable
        Disabled Forbidden Owners Signed-in users Everyone
      • Permission
        • Forbidden
        • Owners
        • Signed-in users
        • Everyone
      • Invitee
      • No invitee
      • Options
      • Versions and GitHub Sync
      • Transfer ownership
      • Delete this note
      • Template
      • Save as template
      • Insert from template
      • Export
      • Dropbox
      • Google Drive
      • Gist
      • Import
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
      • Download
      • Markdown
      • HTML
      • Raw HTML
    Menu Sharing Create Help
    Create Create new note Create a note from template
    Menu
    Options
    Versions and GitHub Sync Transfer ownership Delete this note
    Export
    Dropbox Google Drive Gist
    Import
    Dropbox Google Drive Gist Clipboard
    Download
    Markdown HTML Raw HTML
    Back
    Sharing
    Sharing Link copied
    /edit
    View mode
    • Edit mode
    • View mode
    • Book mode
    • Slide mode
    Edit mode View mode Book mode Slide mode
    Note Permission
    Read
    Only me
    • Only me
    • Signed-in users
    • Everyone
    Only me Signed-in users Everyone
    Write
    Only me
    • Only me
    • Signed-in users
    • Everyone
    Only me Signed-in users Everyone
    More (Comment, Invitee)
    Publishing
    Everyone on the web can find and read all notes of this public team.
    After the note is published, everyone on the web can find and read this note.
    See all published notes on profile page.
    More (Comment, Invitee)
    Commenting Enable
    Disabled Forbidden Owners Signed-in users Everyone
    Permission
    Owners
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Invitee
    No invitee
       owned this note    owned this note      
    Published Linked with GitHub
    Like BookmarkBookmarked
    Subscribed
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    Subscribe
    --- tags: CCNS, programming contest --- CCNS 競技程式設計教材 === 各種競程的基本觀念及演算法教材編輯計劃。 > [name=DanielChen] 預計投稿今年的 [iT邦鐵人賽](https://ithelp.ithome.com.tw/ironman),督促自己把坑填好填滿,各位編輯可以自己選擇要不要一起,今年剛好可以組團(不過各自還是要每天發文,只是團體完賽有額外的獎品) 編輯 --- Yuri DC ian hexrabbit afcidk > 我想不到留什麼名字 留中文怪怪的[name=良] > 隨便, 取個中意的名字就好[name=Uvuvwevwevwe Onyetenyevwe Ugwemubwem Ossas] Gitbook 教學 --- [Gitbook Documentation](https://www.gitbook.com/book/gitbookio/documentation/details) (官方文檔) [Gitbook 中文解說 - 2.4](https://www.gitbook.com/book/wastemobile/gitbook-chinese/details) (中譯版本,更新時間和官方有出入,可能有部分內容未更新) 想一個很帥潮(ㄧㄡˊ)標題 --- とある算法の禁書目録 章節 --- > 順序不見得依照下面的排列,以教材內容為主 > 該教材在 [2019 年](https://hackmd.io/@3xOSPTI6QMGdj6jgMMe08w/HknO-zmQI)、[2020 年](https://hackmd.io/@nckuacm/ryLIV6BYI)被用在成大競程課程的教材 (較完整) * 0x00 [緒論](https://hackmd.io/s/SkYLVwBfG#) * 本書簡介 * 什麼是演算法 * 什麼是算法競賽 * 0x01 [語言 & IO & 數值處理 & 遞迴 (概念性質)](https://hackmd.io/s/rk6moUyQz#) * C/C++ 簡介 * 基本輸入輸出 * 數值系統 * 字串處理 * 流程控制 * 函式遞迴 * 0x02 [基礎算法分析 & 資料結構](https://hackmd.io/s/HJ1hSDSGG#) * 演算法的效率 * 設計演算法的思維 * 枚舉 * 分治法 * 動態規劃 * 貪心法 * 資料結構 * Queue & Stack * Linked list * Graph & Tree * Disjoint sets * 0x03 [搜尋](https://hackmd.io/s/Bke2V2HGM#) * DFS & BFS * 枚舉排列 * Backtracking * 關於左閉右開區間 * 二分搜尋 * 0x04 [排序](https://hackmd.io/s/rklO5mbQz#) * $O(N^2)$ 排序 * $O(N\log_2N)$ 排序 * Counting sort * 箱子排序法 * Heap (Priority queue) * 拓樸排序 * 0x05 [Dynamic Programming (動態規劃)](https://hackmd.io/s/H1oNErB1X#) * 經典 DP 問題 * 無限 & 有限 背包問題 * Longest Increasing Subsequence (LIS) * Longest Common Subsequence (LCS) * 多維度 DP * DP 優化 * Convex Hull Optimization * 單調隊列優化 * 四邊形優化 (Knuth Optimization) * 1D/1D 的凹/凸性優化 * 2D/1D 轉換 1D/1D * 2D/1D 的凸性優化 * 0x06 [圖論](https://hackmd.io/s/SkpjM8qWz#) * 最小生成樹 * Single-Source Shortest Paths * All-Pairs Shortest Paths * A* 搜尋演算法 * 最大流 * Bipartite Matching * Articulation point & Cut edge * Strongly Connected Components (SCC) * 0x07 [String matching](https://hackmd.io/s/rkJSm2nMG#) * KMP algorithm * Z-algorithm * Rabin-Karp algorithm * AC 自動機 * 0x08 [進階資料結構](https://hackmd.io/s/SkryGuCbQ#) * Sparse Table: RMQ * Binary Indexed Tree * 線段樹 * Treap * 持久化 * 0x09 [數學](https://hackmd.io/s/BkwJBTOq7#) * 算術 * Karatsuba algorithm * 快速冪 * 矩陣快速冪 * 線性遞迴 * 數論 * GCD * 質數篩檢 * 質數判斷 * 計算幾何 * 浮點數誤差 * 線段相交 * 凸包 * sweep line & rotating calipers * 0xFF [附錄](https://hackmd.io/s/Sy4qWO10M#) * 常用 STL 函式介紹 * sort (包含使用 cmp 比較方式) * lower_bound & upper_bound * string * map * set * multiset * stack * queue * priority_queue * vector * list * pair > 可能要想一下這幾節的順序要怎安排 * 輸入優化 * 常用黑魔法 (? * 淺談 GNU Debugger (gdb) 寫作規範 --- - 慣例及符號會在`0x00` 緒論中描述,請編輯者看過後再動筆。 - 用句精簡準確,不要太冗。 - 寫作時請假設讀者已經理解此章之前的內容(可以提醒他們該往哪章複習) - 確定的事情,不要用不確定的語氣描述事情 - 在實作中的額外的優化技巧不需先提及,避免太過偏離主題。 - 例如 $a+(b-a)/2$ 會比 $(a+b)/2$ 好,搜尋刻意提早 `break;` 之類的。 - 在文中想偏離主題, 使用引言 (blockquote) `>`, 或是用腳註 (footnote) `[^]` :::info **Wording** 用字,專有名詞,專有名詞翻譯,或某些詞統一使用英文等 **Formatting** 各節段落的安排方式與字級規範,或文字格式,如英文和中文間的空格 **Coding Style** 範例程式的 coding style,沒有要求的就隨意 ::: ### Wording - 盡可能的在第一次出現的英文術語給予**適當**中文註解 (沒有適當的,就別翻譯 - 同一個意思的術語不要出現兩種寫法,盡量以意思容易傳達的術語為主 (e.g. 指派 vs. 賦值,遞迴 vs. 遞歸) >老實說我覺得遞歸這翻譯比較好,不過台灣普遍都用遞迴,那就用遞迴吧([name=yuessiah] 我認為賦值二字較指派更能直接表達行為[name=HexRabbit] - 行與列只用 column 與 row 稱呼 <!-- - 數列不用"頭"和"尾"這易混淆的字,建議用"最左"和"最右" --> > 文中有看到的話,幫忙修正 ### Formatting - 數字與英文與中文間要有空格隔開 - 中文用全形標點符號,英文與數字與符號間用半形 - list 統一用星號 - 練習/範例 的標題格式為 [來源 題號 題目名稱] e.g. [$\text{C}$ODEFORCES$^\beta$ 896D Nephren Runs a Cinema](http://codeforces.com/problemset/problem/896/D) - 練習/範例 一律使用 #### header - 範例後直接上題目 e.g. #### 範例 [GCJ Kickstart Round F 2018 B Specializing Villages](https://code.google.com/codejam/contest/3314486/dashboard#s=p1): > 關於範例和練習的規則,如果看到有沒遵循的,就順手幫改[name=yuessiah] ### Coding Style - 縮排:兩格空白 HackMD Edit 內下方可調: ![](https://i.imgur.com/RLKiBxU.png) Vim 中可 `:setl et sw=2 ts=2` syntax highlight 用 cpp (**別用 clike**) >若 for 迴圈遍歷的是整個 STL 的容器,我建議採用 c++11 的 [Range-based](https://en.cppreference.com/w/cpp/language/range-for) 寫法,這樣可讀性比較高, > `for (auto &it: C) {}` 這跟嚴謹的演算法書籍寫的 $\forall \text{it}\in C:$ 是很相似的[name=yuessiah] --- - 花括弧位置: ```cpp bool foo() { return true; } ``` --- - 保留字與後面括弧要有一格空白: ```cpp if (foo()) return true; ``` --- - 賦值等號旁要有空白: ```cpp a = 7; ``` --- - 逗號後要有空白: ```cpp int a, b, c, d, e; ``` --- - `for` 迴圈的格式: ```cpp for (int i = 0; i < n; i++); ``` --- - 段落中某些程式碼的省略: ```cpp for (int i = 0; i < n; i++) { foo(); : . // Keep Calm and Carry On! printf("bar\n"); } ``` License ---

    Import from clipboard

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lost their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template is not available.


    Upgrade

    All
    • All
    • Team
    No template found.

    Create custom template


    Upgrade

    Delete template

    Do you really want to delete this template?

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Tutorials

    Book Mode Tutorial

    Slide Mode Tutorial

    YAML Metadata

    Contacts

    Facebook

    Twitter

    Feedback

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions

    Versions and GitHub Sync

    Sign in to link this note to GitHub Learn more
    This note is not linked with GitHub Learn more
     
    Add badge Pull Push GitHub Link Settings
    Upgrade now

    Version named by    

    More Less
    • Edit
    • Delete

    Note content is identical to the latest version.
    Compare with
      Choose a version
      No search result
      Version not found

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub

        Please sign in to GitHub and install the HackMD app on your GitHub repo. Learn more

         Sign in to GitHub

        HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Available push count

        Upgrade

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Upgrade

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully