はじめに
青色コーダーになった!(爆速タイトル回収)入水が2023/07/29で入青が2024/08/10だからちょうど一年くらい水色だったらしい.初めて色変記事の執筆に挑戦!(文章の後半に漫画「鬼滅の刃」のネタバレを含みます)
入水時点から何が成長したのか
典型力の向上
典型90の☆5〜☆6,ABCの水diffと青1〜2diffの問題を解いた.水diffを解くのに必要なアルゴリズムや典型テクニックを身につけることができたと思う.典型90の☆5の内容はだいぶ使いこなせるようになったが,典型90の☆6はまだあまり身に付いてないと思う.以下に覚えたテクニックをいくつか挙げる.矢印を使っているが左側と右側は一対一対応ではないことに注意していただきたい.そして,過学習気味なところもあると思うから注意して欲しい.
- 数列の順番が関係ない → ソートしたほうが考えやすい
- XOR → ビット毎に考える
- グラフ上の辺の破壊クエリ → 後ろから考える
- 回文 → 前半のみで一意に定まる
- 回文 → 長さが奇数と偶数の場合で分けて考える
- 最小全域木 → 辺の重みが軽い順の貪欲(クラスカル法の気持ちになる)
- Functional Graph → 各連結成分につき一つの閉路がある
- ゲームでの期待値 → 後ろからDP
- 解の候補が $N!$ 通りあり,それが「使用した要素の集合」と「最後の要素」にのみ依存する → $2^NN$ 通りに落とすことができる
- 結合法則が成り立つ → 累積◯◯ができる(累積和,累積max,累積GCDなど)
- 結合法則が成り立つ → 単位元があればセグメント木に乗る
- DPで数え上げたいけど重複する → $DP[i]=◯◯の最大値がiになる場合の数$
- 各要素の重要度が選び方によらず一定 → ソートしてDP