探索アルゴリズムなどのカテゴリーです。

AtCoder, Union Find, グラフ理論, 探索, 深さ優先探索

問題方針各マスに番号を割り振る

\( H \) 行 \( W \) 列のマスを持つグリッドにおける \( i \) 行 \( j \) 列目のマスの番号を \( i \times W + j \) とします。このようにマスの番号を割り当 ...

AOJ, 幅優先探索, 探索

問題方針幅優先探索

チーズは硬さ \( 1 \) から \( N \) まで順番にとる必要があるので、\( 1 \) から \( 2 \) までの最短距離を計算し、次に \( 2 \) から \( 3 \) までの最短距離を計算するよう ...

AOJ, 二分探索, 半分全列挙, 探索

問題方針半分全列挙

ダーツは最大で \( 4 \) 本投げることができますが、そのすべての得点パターンを列挙することは厳しいと思います。なので、\( 2 \) 本投げた時に得られる \( M \) 以下の得点のパターンをすべて列挙します ...

AtCoder, ビット全探索, 探索

問題方針ビット全探索

ある曜日のどの時間帯に店を営業するかどうかで利益が変わり、\( 5 \) つの曜日と午前・午後を考えれば良いので、\( 2^{10} \) 通りのビット全探索を行えば良いことが分かります。

店の営業情報は \ ...

CSA, 幅優先探索, 探索

問題問題の意図

頂点数が \( N \) 個で辺の数が \( M \) 本の無向グラフが与えられます。始点 \( S \) から終点 \(A, B \) への最短経路において、同じ辺を通る長さの最大値を答えます。また、辺の重みは \( ...

AtCoder, ビット全探索, 動的計画法, 探索

問題方針ある高さの正しい横棒の配置

ある高さの横棒の配置のパターンを考えます。横棒は縦棒の間に置くことができるので、縦棒の本数 \( W \) が \( W = 1 \) のときは横棒を置くことができません。そうではないとき、縦棒の間に ...

AtCoder, 二分探索, 探索

問題方針二分探索

整列された配列に対してある値より大きいまたは小さいものの個数を求めるには、二分探索を使って求めることができます。C++ には “lower_bound” と “upper_bound ...

AtCoder, 探索, 深さ優先探索

問題方針制約から考える

竹の本数 \( N \) は最大で \( 8 \) 本であることに注目すると、合成魔法を基準に考えていけばよいことが思いつきます。ある竹 \( i \) について、合成魔法を適用できる竹は \( 3 \) 通りで ...