競プロ練習: EDPWを解けずに終わった
これは戒めのメモ。DPに慣れたくて、後述する記事を一通り読みながらリンクされた問題を解いてみた。 AtCoderには教育目的のコンペもいくつかあり読んでいた記事からたどり着いた。 そのなかでW - Intervals が解けずに立ち往生している。 どうしても最後の2つがWA。。あまりにもWAが続くので一度、諦めてしばらくしてから戻ってくる事にした。遅延セグメントツリーの問題なのかDPの設計や境界条件の考慮に問題があるのかわからない。
勉強中に得た成果: ojコマンド
調べてたら ojコマンド にたどり着きました。 問題のダウンロードや提出、自作した入力生成スクリプトと組み合わせて大量のテストケースを作ったり、TLEな別実装で回答を生成したりできる。便利だ。
でも TLE は打ち切られちゃうので本当に正答を返してくれるかは謎ってところが悩み。 ちなみに、これを使っても突破できず。
|
|
とりあえず通してやった記事・解き残しのある記事・再読予定あたりを記録する。
DPで知ったこと
前にDPは順序が必要でインスタンス同士の関係がDAGじゃないとダメって思ってると書いたけどDAGとは限らないらしい。 DAGじゃないときに無理やりDPを複数回やることで突破するような問題もあるらしい。
複数の更新と問い合わせを繰り返すデータ構造としてフェニック木(BIT)、セグメント木、レンジ木、遅延セグメント木を知った。 遅延セグメント木は解けてない問題に絡んでいて実装できてるか不安。
それぞれのデータ構造を適用できる集計は利用する演算の代数構造によって決まる。 型変数でその辺を使って多層型としてコレクションを定義できる言語いいなぁって思った。 あと逆元がない群(単位元を持つ半群)をモノイドと呼ぶらしい。 セグメント木ではモノイドによる集計を扱える。基本的な代数も復習したい。
読んだ記事とか積み残しとか
一通りやった
- ビット演算 (bit 演算) の使い方を総特集! 〜 マスクビットから bit DP まで 〜 - Qiita
- DPの話 - aizuzia
- 貰う DP と配る DP、メモ化再帰、個数制限なしナップサック問題 - Qiita
- 典型的な DP (動的計画法) のパターンを整理 Part 1 ~ ナップサック DP 編 ~ - Qiita
- アルゴリズムとは何か!? ~ 文系理系問わず楽しめる精選 6 問 ~ - Qiita
- 意外と解説がない!動的計画法で得た最適解を「復元」する一般的な方法 - Qiita
- 二分探索アルゴリズムを一般化 〜 めぐる式二分探索法のススメ 〜 - Qiita
- DFS (深さ優先探索) 超入門! 〜 グラフ・アルゴリズムの世界への入口 〜【前編】 - Qiita
- DFS (深さ優先探索) 超入門! 〜 グラフ・アルゴリズムの世界への入口 〜【後編】 - Qiita
- BFS (幅優先探索) 超入門! 〜 キューを鮮やかに使いこなす 〜 - Qiita
- セグメント木をソラで書きたいあなたに - hogecoder
- 遅延評価セグメント木をソラで書きたいあなたに - hogecoder
- プログラミングコンテストでのデータ構造
- AtCoder ABC 113 C - ID (300 点) (座標圧縮の教育的練習問題) - けんちょんの競プロ精進記録
リンクされた問題を残している
- DPの話 - aizuzia
- 動的計画法超入門! Educational DP Contest の A ~ E 問題の解説と類題集 - Qiita
- 計算のきまり - d.y.d.
- 競技プログラミングにおけるbitDP問題まとめ - はまやんはまやんはまやん
- bitDP - 個人的な競プロメモ
- LIS でも大活躍! DP の配列使いまわしテクニックを特集 - Qiita
- セグメント木を徹底解説!0から遅延評価やモノイドまで | アルゴリズムロジック
- Introduction to Segment Tree - Lilliput Steps
流し読みで再読予定
- 実世界で超頻出!二部マッチング (輸送問題、ネットワークフロー問題)の解法を総整理! - Qiita
- 累積和を何も考えずに書けるようにする! - Qiita
- しゃくとり法 (尺取り法) の解説と、それを用いる問題のまとめ - Qiita
- セグメント木をあきらめた人のための平方分割 - くじらにっき++
- 動的計画法を極める!
- Educational DP Contest の F ~ J 問題の解説と類題集 - Qiita
- ゲームを解く!Educational DP Contest K, L 問題の解説 - Qiita
- Educational DP Contestの勧め - はまやんはまやんはまやん
- AtCoder Typical DP Contest の勧め : Grenache’s blog
- 「写像12相」を総整理! 〜 数え上げ問題の学びの宝庫 〜 - Qiita素数判定いろいろ - AKS素数判定法 - Qiita
- AtCoder 版!蟻本 (初級編) - Qiita
- レッドコーダーが教える、競プロ・AtCoder上達のガイドライン【中級編:目指せ水色コーダー!】 - Qiita
- yukicoder Advent Calendar Contest 2017 11日目 Day of the Mountain 解説 | 東京工業大学デジタル創作同好会traP
- 典型的な DP (動的計画法) のパターンが整理されていたので python で書いてみる - わかばめにっき
- 指数時間アルゴリズム入門
- /動的計画法 - wiki.kimiyuki.net
- 「競プロ!!」 競技プログラミング Advent Calendar 2017 - Adventar
- 競技プロ的なアルゴリズムのスライドのまとめ Wiki - yukicoder
- 指数時間アルゴリズム入門
- 競技プログラミングにおけるゲーム木探索の面白さ - Qiita
- 競技プログラミングで解法を思いつくための典型的な考え方 | アルゴリズムロジック
- /競技プログラミングにおける典型の一覧 - wiki.kimiyuki.net
解き残し
- W - Intervals
- 問題 - Educational DP Contest / DP まとめコンテスト
- 問題 - Typical DP Contest
- 0-1 Knapsack Problem
- yukicoder No.951 【本日限定】1枚頼むともう1枚無料! - koba-e964の日記
あとまわし
読んでいて面白いのはこのあたりだった。けどもう少し基本的なことを素早くできないとなぁってことで我慢している。 大学とか高校の数学が楽しいけど単純な計算問題を手早く解けるようにしとく方が考えられる範囲が広がるよなぁって感じ。
- BDD, ZDD, フロンティア法, Graphillion - (iwi) 備忘録
- 大規模グラフアルゴリズムの最先端
- 平面グラフと交通ネットワークのアルゴリズム
- クリーネの不動点定理(とベルマンフォード法) - ジョイジョイジョイ
- Segment Tree Beatsの実装メモ (基本まわり) - 日々drdrする人のメモ
- Segment Tree Beatsの実装メモ (応用的な例題まわり) - 日々drdrする人のメモ
- グラフ探索アルゴリズム Advent Calendar 2015 - Qiita
- データ構造と代数構造 - koba-e964の日記
- 動的計画法を実現する代数〜トロピカル演算でグラフの最短経路を計算する〜 - Qiita
- トロピカル幾何による工程計画問題の可視化
- トロピカル幾何学 - Wikipedia
- ウェーブレット木の世界
- 1. はじめに