2017-10-04 競技プログラミングにおける連結DP問題まとめ 競技プログラミング 連結DP 造語なのだが、連結性を状態として持つDP フロンティア法とかとも言う 問題 TDPC マス目 解説1 解説2 解説3 yukicoder No.541 3 x N グリッド上のサイクルの個数 解説1 解説2 解説3 yukicoder No.569 3 x N グリッドのパスの数 解説 ICPC模擬国内予選2017 H: Big Maze 解説1 解説2 yukicoder No.234 めぐるはめぐる (4) 解説 (フロンティア法?) AC Ears 解説
2017-10-04 競技プログラミングにおける挿入DP問題まとめ 競技プログラミング 挿入DP 順列などに挿入することで遷移を進めていくDP 問題 HR Permutation Happiness SRM694 Div2 Hard UpDownNess 解説 CSA Restricted Permutations TDPC 文字列 解説1 解説2 解説3 CF429 On the Bench yukicoder No.93 ペガサス 解説1 解説2 http://kmjp.hatenablog.jp/search?q=挿入DP SRM582 Div1 Med ColorfulBuilding 解説1 解説2 解説3 TCO2018 Gangsters 解説 AOJ 座席 (Seats) 解説 挿入DPとは逆に抜いていくDP(抜去DP) ARC097 Sorted and Sorted 解説 【発展的話題】挿入DPの更新最適化 挿入DPの時に掛け算を遅延評価して、上手くやる rep(i, 0, N) rep(k, 0, N) rep(col, 0, N) { dp[i + 1][k][col] = dp[i][k][col] * (k + 1); if(c[i] == col) dp[i + 1][k][c[i]] += dp[i][k][col]; else dp[i + 1][k + 1][c[i]]; } を掛け算を遅延評価することでO(N^3)からO(N^2)へ削減可能 これ 解説1 解説2 解説3
2017-10-04 競技プログラミングにおけるUnionFind問題まとめ [DSU] 競技プログラミング UnionFind, DSU 連結成分を管理するデータ構造 (解説) AtCoder Libraryで実装がある 最小全域木の構成でも使われる 連結時に成分に入っている情報を併合することもある(要素数とか) incremental(併合はできるが、分離はできない) (発展だが)永続UnionFindもある 森の連結成分は「頂点数-辺数」で求められるテクがある ダブリングを用いることで連続区間のマージができるようになる 問題1 問題2 問題 AtCoder Union Find 連結判定 ARC032 道路工事 ABC075 Bridge CC Skiing 解説 ARC097 Equals 解説 FHC2018 Round1 Ethan Traverses a Tree 解説 AC Propagating Edges 解説 連結判定+データ ARC037 バウムテスト AOJ Shopping yukicoder No.416 旅行会社 AOJ 部活動調査 解説 AC Weights on Vertices and Edges ABC120 Decayed Bridges 解説 永続UnionFind AGC002 Stamp Rally (永続UnionFind解だとTLEするかも) 森の連結成分は「頂点数-辺数」で求められるテク AGC015 Nuske vs Phantom Thnook 解説 ECR31 Binary Matrix 解説 【発展的話題】 Dynamic Connectivity 参考 セグメント木を2つ持ってセグメント木上でDFSするらしいがさっぱり分からん 動的木でそれっぽいことできるのでは? CFの記事 【競技プログラミング】online dynamic connectivity(削除可能union-find)の作り方を詳しく解説!!! - Qiita この前見つけた。ちゃんと読んでない 問題 CF Dynamic connectivity contest HR Simple Tree Counting 解説 CF319 Painting Edges 解説 AC Weights on Vertices and Edges ECR22 Bipartite Checking
2017-10-03 競技プログラミングにおけるマンハッタン距離問題まとめ 競技プログラミング マンハッタン距離 マンハッタン距離(wiki) 最強のマンハッタン距離解説記事 テク 45度回転 参考 全ての座標を(x,y)から(x+y,x-y)で変換する すると、あるマンハッタン距離dで移動可能な範囲は正方形の形になる 回転前のマンハッタン距離 = 回転後のチェビシェフ距離(座標の差の最大値) 差の総和を最小化するときは中央値を使う ある2点のマンハッタン距離は同じ回転移動・平行移動を施しても同じになる Let's Dance!(hard) | EEIC Programming Contest #1 Question | Contests | HackerRank 問題 yukicoder No.131 マンハッタン距離 (WA出まくったら飛ばしてもいい) AtCoder Four Coloring ARC047 同一円周上 ARC065 へんなコンパス ARC103 Robot Arms yukicoder No.602 隠されていたゲーム2 解説 Let's Dance!(hard) | EEIC Programming Contest #1 Question | Contests | HackerRank とても総合的な問題 LC Maximum of Absolute Value Expression (3次元マンハッタン距離) 差の総和を最小化するときは中央値を使う ARC100 Linear Approximation 解法 SRM324 Div1 Med TournamentPlan 解説 AtCoder CARtesian Coodinate 解説 https://docs.google.com/document/d/1NJ1v8LARAr3wvIK2G3TggaRZrY0n22RJQ5-_GM7oxPI/edit https://docs.google.com/document/d/1LwEgOCLOPtNM0ztKO4L8cfqaPnSswAacdZFZY2Psbj4/edit https://docs.google.com/document/d/1NJ1v8LARAr3wvIK2G3TggaRZrY0n22RJQ5-_GM7oxPI/edit AC Come Together 解説
2017-09-30 4/N [Tenka1 Programmer Contest C] 競技プログラミング http://tenka1-2017.contest.atcoder.jp/tasks/tenka1_2017_c 続きを読む
2017-09-28 Min Swaps [CSAcademy #50 E] 競技プログラミング https://csacademy.com/contest/round-50/task/min-swaps/ 概要 N要素の順列Pがある。 この順列の要素を任意回スワップすることで隣接する要素の差の総和を最大化したい。 最大化するときにスワップする回数の最小値は? Nは偶数で2<=N<=100000 続きを読む
2017-09-27 GraphAndPairs [SRM721 Div1 Med] 競技プログラミング 問題概要 以下の条件を満たす無向グラフを作れ 1. グラフはシンプル 2. 3~1000頂点 3. 辺は2~1000本 4. 良いペア(最短距離がd)が丁度k通りある 2 <= d <= 50 1 <= k <= 5 * 10^4 続きを読む