[AOJ] DPL 1 D 最長増加部分列
LIS: Longest Increasing Subsequence (最長部分増加列) という問題です。この問題では、狭義単調増加列の中で最も大きいものを求めます。
動的計画法と二分探索参考を参照してください。 ...
[AOJ] No. 0610 気象予報士 (Weather Forecaster)
小区間 \( (i , j) \) からその区間を含めて西側にある一番近い雲までの距離が答えになります。もし、雲が存在しなければ \( -1 \) となります。どのようにして求めるかですが、二次元 ...
[AOJ] No. 0621 ロシアの旗 (Russian Flag)
‘W’, ‘B’, ‘R’ についてそれぞれ列ごとに累積和を取っていきます。ある列を塗り替えるコストは、\( M \) からその色の個数を引いた値な ...
[AOJ] No. 0633 ぬいぐるみの整理 (Plush Toys)
素直に浮かぶ方針は、並び方を全通り試すという方法ですが、このときの場合の数は、\( M!\) となるので、計算量が多すぎます。ここで、次のことに着目します。ぬいぐるみを \( k \) 種類整列済みであるとき、\( k + 1 ...
[AOJ] No. 0632 休憩スペース (Refreshment Area)
休憩スペースは南北方向または東西方向に置くことが可能なので、縦方向と横方向に分けて考えます。
連続する空マスを数えるある方向に向かって連続する空マスを数え、その値が \( D \) より ...
[AOJ] No. 0301 Baton Relay Game
配列を使って要素を削除していく方法は TLE となる可能性があるので、リング配列のポインタを考えます。
配列 \(prev \) の \( prev \) を 番号 \( i \) の後ろの番号、配列 \(next ...
[AOJ] No. 0558 Cheese
チーズは硬さ \( 1 \) から \( N \) まで順番にとる必要があるので、\( 1 \) から \( 2 \) までの最短距離を計算し、次に \( 2 \) から \( 3 \) までの最短距離を計算するよう ...
[AOJ] No. 0529 Darts
ダーツは最大で \( 4 \) 本投げることができますが、そのすべての得点パターンを列挙することは厳しいと思います。なので、\( 2 \) 本投げた時に得られる \( M \) 以下の得点のパターンをすべて列挙します ...
[AOJ] GRL_7_A Bipartite Matching
2部マッチングの解説は、二部マッチングの解説を参照してください。二部グラフの最大マッチングを求めるアルゴリズムについては、蟻本の p. 197 のコードを利用します。
\( X \) の頂点と \( Y \) の頂 ...