入緑記事!
簡単に書いたもののため、厳密性が乏しいです。
2026(今年)の4月からatcoderを本格的に始めました。
半年かけて緑色になりました。
Hysellaの初期ステータス(4月)
- プログラミングはscratchのみ(C++やPythonは当時全くできなかった)
- 数学はできない(JMO Bランク)
- なお数学以外もできない(偏差値40)
1日灰色diffでもいいから最低でも1問、平均して2問ぐらいは解いていました。
学んだアルゴリズム
- 累積和,imos法
- DFS,BFS,多始点BFS
- DP(ナップサック、1(2)次元、桁、区間、復元、LIS)
- 区間スケジューリング
- ダイクストラ法
- bit全探索
- クラスカル法
- 二分探索
- 尺取り法
- rolling hash
- 平面走査
- トポロジカルソート
- 強連結成分分解(SCC)
学んだデータ構造
- 木
- union-find
- グラフ
- segtree
- lazy_segtree
学んだその他の知識
- modint
- rotate関数
- sieve(素数系)
- fenwick_tree
- comb
- bit演算(^,|,&)
- 三角関数
- 母関数
- array
- struct
- DFT,FFT
学んだ典型
- 答えで二分探索
- 木の直径を求める(単純パスの長さの最大値)→最短距離を2回計算する
- 後ろから更新する
- 前から貪欲法
- A-Bでソートして貪欲法
- 二部グラフの性質(奇数長の閉路は存在しないなど)
- 累乗の高速計算
- 逆元の計算
- マンハッタン距離の45°回転(マンハッタン距離をチェビシェフ距離に変換)
- マンハッタン距離でx,yを独立に考える
いまだによく分からないもの
- 最大フロー
- 最小カット
- Zobrist hash
- LCS
- 偏角ソート
- grundy数
- Nim
- 全方位木DP
日々の習慣
- 受験勉強
- 必ず散歩する
- 競技プログラミングの練習 灰色diffでもいいから最低1問
- たまにADTをやる。ただしモチベを上げる目的のためeasyに参加
- 典型90,鉄則を進める
コンテスト前
- 競技プログラミングの練習をしない
- rating estimatorで自分が次どのくらいのパフォーマンスを出せば色変するのか確認する
- ideal sheetといった地雷が来ないように祈る(実装、考察重い系)
コンテスト中
- 天下り的な発想は慎む(問題をみてDPぽいからDPを前提に考察を進めるのではなくて、考察を進める中でこれはDPなんだという順番で進める)
- 余事象で上手くいく問題が存在するので、数式変形を試みる(あくまで考察が詰まったらの話)
- ABを爆速で解き、CDEは解けそうなやつから解く
- 文章量がideal sheet級ならば人類はあまり通さない気がするので、違う問題を見てみる
コンテスト後
- 順位表を確認する
- コンテスト中に解いた、解けなかった問題の解説を見る(解けなかった問題のうち、実装があと少しならばその問題の解説は見ない)
- 大体のパフォーマンスを予測し、期待(or 絶望)しながら寝る
効果があったもの
- 実装スピードを上げる
- 典型問題を解きまくる
- ADT easyに参加し早解きの感覚を養う など