以下に、これまで管理者がコンテストで使用したり学んだりしたコードを、python3を中心に紹介します。
組み合わせ
サイコロの操作
最小公倍数・最大公約数
最長共通部分列問題(LCS: Longest Common Subsequence )
最長増加部分列問題(LIS: Longest Increasing Subsequence)
・蟻本 p64, 65 (bisect_left 使用) DP
辞書
順列
小数の操作
・四捨五入
進数
スタックの利用
・蟻本 P298 Largest Rectangle in a Histogram(POJ No.2559)
全探索
素因数分解
総和系
素数
多項式
単一始点最短路問題
トポロジカルソート
内外判定、当たり判定
・2つの円の重なり判定
・扇形に対する内外判定
・線分の重なり判定
・長方形の重なり判定
・三角形と点の当たり判定
ナップサック問題
・蟻本 p53 メモ化
・蟻本 p55 DP
・個数制限なし:蟻本 p58 DP
二次元配列
二分探索(Binary Search)
幅優先探索(BFS:Breadth-First Search)
bit演算
ビットDP(bit DP)
深さ優先探索(DFS: Depth-First Search)
・蟻本 P35 「Lake Counting」
・競技プログラミングの鉄則 P353「Depth First Search」
部分和
・部分和:正の数列の部分和でSができるか?_動的計画法(DP)
分数
方向の状態確認
無限大
文字列
・文字列探索(Knuth–Morris–Pratt algorithm、KMP法)
Monotonic Stack
約数
UnionFind(ユニオンファインド)
リストの操作
・文字列のリストを、大文字・小文字の区別をすることなくソート