K玖溟アルゴノート

玖溟アルゴノート

64講義。Pythonの基本からアルゴリズム、Python経験者向けC++移行まで。

講義内に基本128問と、計算量・高速化の追加32問があります。招待・ログインなしで読めます。

  1. まずは、1行を動かす
  2. 変数は「名前のついた値」
  3. 入力を受け取る
  4. 条件で道を分ける
  5. 繰り返しを1周ずつ追う
  6. 配列と添字を混同しない
  7. 文字列も順番に読める
  8. 関数で手順を切り出す
  9. 制約から計算量を見積もる
  10. 全探索は「漏れなく、重複なく」
  11. ソートで順序を作る
  12. set と辞書で「見たこと」を記録
  13. 最大公約数とユークリッドの互除法
  14. 累積和で区間を引き算にする
  15. 二分探索は「境界」を探す
  16. 尺取り法で左端も動かす
  17. 貪欲法は「よさそう」で決めない
  18. ビット全探索で部分集合を列挙
  19. 素数をまとめてふるいにかける
  20. 座標圧縮で値を順位に変える
  21. いもす法で区間更新を差分にする
  22. DPは「同じ続きをまとめる」
  23. BFSで重みなし最短路
  24. DFSと木の親子関係
  25. ヒープで今の最小値を取る
  26. Union-Findで連結を管理
  27. Dijkstraで重み付き最短路
  28. ナップサック:状態を何で持つか
  29. 剰余と組合せを安全に扱う
  30. Fenwick treeで更新つき累積和
  31. セグメント木は区間の集約器
  32. LISと「同じ長さなら末尾を小さく」
  33. DAG:依存関係の順に処理する
  34. 半分全列挙で指数を半分に
  35. 部分集合DPで履歴を圧縮する
  36. ダブリングで祖先を飛ぶ
  37. 区間DPは短い区間から
  38. 強連結成分を縮めてDAGにする
  39. 全方位木DPで根を付け替える
  40. 桁DPで巨大な範囲を数える
  41. Z-algorithmで接頭辞との一致を測る
  42. 幾何は外積の符号から
  43. 包除原理:重なりを引き戻す
  44. 最大流:残余辺で選択をやり直す
  45. 遅延評価:更新をまとめて運ぶ
  46. ポテンシャル付きDSU:差を保つ
  47. 行列累乗で線形遷移を飛ばす
  48. 畳み込みを「係数の組」で理解する
  49. ゲームDP:勝ち状態を定義する
  50. Mo法:質問の順番を変える
  51. 未知問に向かう:不変量と反例
  52. 高速解と愚直解をぶつける
  53. DP高速化は条件を証明してから
  54. 赤への練習:解説を閉じて再構成する
  55. PythonからC++へ:最初の提出
  56. 整数型とオーバーフロー
  57. listからvectorへ
  58. if・for・関数を書き換える
  59. sortとlower_bound
  60. dict・set・heapの対応
  61. コピー・参照と関数の引数
  62. 移植演習:累積和をC++で
  63. 負数の割り算と剰余の違い
  64. ACLへ進む:型と演算を揃える