Skip to content

HanaYukii/Competitive-Programming

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

136 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Competitive Programming

演算法模板、題目練習與比賽紀錄,以 C++ 撰寫。

目錄結構

.
├── template/              # 演算法模板
│   ├── default.cpp        # 比賽預設模板
│   ├── (graph)
│   ├── (data structure)
│   ├── (string)
│   ├── (math)
│   └── (misc)
├── topic/                 # 依主題分類的題目練習
│   ├── 2-sat/
│   ├── blossom/
│   ├── divide-and-conquer/
│   ├── euler-path/
│   ├── flow/
│   ├── game-theory/
│   ├── segment-tree/
│   ├── string/
│   └── sweepline/
└── contest/               # 比賽紀錄
    ├── codeforces/
    │   ├── 900-div2/      # Round 900 (Div. 2)
    │   ├── 160-edu/       # Educational Round 160
    │   └── 25-global/     # Global Round 25
    ├── atcoder/
    │   ├── 350-abc/       # AtCoder Beginner Contest 350
    │   └── 180-arc/       # AtCoder Regular Contest 180
    └── leetcode/
        ├── 400-weekly/    # Weekly Contest 400
        └── 130-biweekly/  # Biweekly Contest 130

比賽紀錄 (contest/)

每場比賽一個資料夾,檔案用題號命名。

Codeforces (contest/codeforces/)

檔案命名:A.cpp, B.cpp, C.cpp, ...

比賽類型 資料夾格式 範例
Div. 1 {number}-div1 901-div1/
Div. 2 {number}-div2 900-div2/
Educational {number}-edu 160-edu/
Global Round {number}-global 25-global/
其他 {number}-{name} 2024-hello/

AtCoder (contest/atcoder/)

檔案命名:A.cpp, B.cpp, C.cpp, ...

比賽類型 資料夾格式 範例
ABC {number}-abc 350-abc/
ARC {number}-arc 180-arc/
AGC {number}-agc 065-agc/

LeetCode (contest/leetcode/)

檔案命名:Q1.cpp, Q2.cpp, Q3.cpp, Q4.cpp

比賽類型 資料夾格式 範例
Weekly {number}-weekly 400-weekly/
Biweekly {number}-biweekly 130-biweekly/

快速開始

建立新比賽資料夾(自動複製模板 + Makefile):

# PowerShell
.\scripts\new-contest.ps1 cf 900-div2       # Codeforces Div.2 Round 900 (預設 7 題)
.\scripts\new-contest.ps1 at 350-abc         # AtCoder ABC 350
.\scripts\new-contest.ps1 lc 400-weekly      # LeetCode Weekly 400 (預設 4 題)
.\scripts\new-contest.ps1 cf 900-div2 8      # 指定題數

# Bash / WSL
./scripts/new-contest.sh cf 900-div2

編譯與執行(進入比賽資料夾後):

make A          # 編譯 A.cpp → A
make run T=A    # 編譯並執行 A
make all        # 編譯所有 .cpp
make clean      # 清除執行檔

演算法模板 (template/)

Graph

檔案 演算法
Dijkstra.cpp Dijkstra 最短路徑
Dinic.cpp Dinic 最大流
BCC.cpp 雙連通分量 (Biconnected Components)
SCC.cpp 強連通分量 (Tarjan's SCC)
LCA.cpp 最近公共祖先 (Binary Lifting)
HeavyLight.cpp 重輕鏈剖分 (HLD)
Centroid.cpp 重心剖分
EulerTour.cpp 尤拉路徑/迴路(multiset 版)
EulerCircuit.cpp 無向圖尤拉迴路(Hierholzer,含邊定向)
Diameter.cpp 樹直徑
bipartile.cpp 二分圖匹配
Hungarian.cpp 匈牙利演算法
KM.cpp KM 演算法(帶權二分圖匹配)
2-SAT.cpp 2-SAT

Data Structure

檔案 資料結構
SegTree.cpp 線段樹(單點修改)
SegTreeLz.cpp 線段樹(懶標記)
PersistSegTree.cpp 持久化線段樹(主席樹)
segment-tree-beats.cpp Segment Tree Beats
BIT.cpp 樹狀陣列 (Fenwick Tree)
0-1Trie.cpp 0-1 Trie

String

檔案 演算法
KMP.cpp KMP 字串匹配
Z-KMP.cpp Z-function
Manacher.cpp Manacher 最長回文子串
AC.cpp Aho-Corasick 自動機
stringhash.cpp 字串雜湊 (Rolling Hash)
SA.cpp 後綴陣列 (Suffix Array)

Math

檔案 演算法
Matrix.cpp 矩陣快速冪
Combination.cpp 組合數學 (nCr + modular inverse)

Misc

檔案 演算法
cdq.cpp CDQ 分治
cdt.cpp 整體二分
Treeiso.cpp 樹同構

題目練習 (topic/)

2-SAT (topic/2-sat/)

檔案 來源
poj3207.cpp POJ 3207
poj3648.cpp POJ 3648
875c.cpp Codeforces 875C
1250E.cpp Codeforces 1250E
1218i.cpp Codeforces Gym 1218I
100112k.cpp Codeforces Gym 100112K
day7J.cpp Contest Day 7 - J

Blossom — 一般圖匹配 (topic/blossom/)

檔案 來源
POJ3020.cpp POJ 3020

Divide and Conquer — 分治 (topic/divide-and-conquer/)

檔案 來源
875d.cpp Codeforces 875D

Euler Path — 尤拉路徑 (topic/euler-path/)

檔案 來源
HDU3018.cpp HDU 3018
HDU5883.cpp HDU 5883
CF723E.cpp Codeforces 723E
CF1361C.cpp Codeforces 1361C

Flow — 網路流 (topic/flow/)

檔案 來源
hdu3599.cpp HDU 3599
hdu3605.cpp HDU 3605
6808.cpp HDU 6808

Game Theory — 博弈論 / SG (topic/game-theory/)

檔案 來源
HDU1848.cpp HDU 1848
HDU3980.cpp HDU 3980

Segment Tree — 線段樹 (topic/segment-tree/)

檔案 來源
poj3468.cpp POJ 3468
hdu1540.cpp HDU 1540
uva11402.cpp UVA 11402
CF718C.cpp Codeforces 718C
CF1252K.cpp Codeforces 1252K
cf383c.cpp Codeforces 383C
1439C.cpp Codeforces 1439C
day3a.cpp Contest Day 3 - A

String — 字串 (topic/string/)

檔案 來源
kmp.cpp KMP 練習
manacher.cpp Manacher 練習
hdu1867.cpp HDU 1867
hdu2203.cpp HDU 2203
hdu3336.cpp HDU 3336
536b.cpp Codeforces 536B
536b-z.cpp Codeforces 536B (Z-function 解法)

Sweepline — 掃描線 (topic/sweepline/)

檔案 來源
POJ1177.cpp POJ 1177
HDU1542.cpp HDU 1542
HDU1255.cpp HDU 1255
hdu1255-v2.cpp HDU 1255(另一種寫法)
TIOJ1224.cpp TIOJ 1224
rectangle-area-intersection.cpp 矩形面積交
vietnam-K.cpp Vietnam Contest - K

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors