確率と最適化問題の解法

サイコロとコイン n面ダイスとコインを使用するゲームの勝率を求める。初期値としてダイスを振り、値が1~K-1の場合コインを繰り返し振る。表が出れば値が倍増、裏が出れば0になり、0で敗北またはK以上で勝利となる。 解法 初期値1~nについて、勝利条件は値が2^x倍されてK以上になることである。各初期値の勝率は1/2^xで、n個の初期値の勝率を合計後nで除算する。 #includ ...

5月26日 00:39 投稿

アルゴリズム競技プログラミング問題集

基本的なアルゴリズム問題集 1. 立方体の体積計算 辺の長さa, b, cが与えられた時、立方体の体積を計算します。 #include <iostream> using namespace std; int main() { int length, width, height; cin >> length >> width >> height; cout > exponent; cout countB; for(int i=0; i<countA+countB; i++) { cout > n; whil ...

5月20日 03:45 投稿

Kruskal再構築木の学習メモ

前提知識 Kruskal最小/最大全域木アルゴリズム、ダブリング(Binary Lifting)の知識を前提とします。 Kruskal再構築木を構築すると、最小全域木上の2点間のパスの最大重み、および重み ≤ w の辺のみを通って到達可能な点の集合を O(log N) で求めることができます。 近年の競技プログラミングでは出題頻度は控えめですが、該当する問題に遭遇した際に非常に強力なツ ...

5月19日 05:15 投稿

最小生成木の実装:Prim法とKruskal法の比較と実装例

グラフ理論における最小生成木を求める主要なアルゴリズムとして、Prim法とKruskal法がある。n個の頂点とm個の辺を持つグラフを対象とする。 アルゴリズムの特性 Prim法は隣接行列で表現された密グラフに適しており、基本実装の時間計算量はO(n²)である。優先度付きキューを用いてO(n log n)に改善可能である。 Kruskal法は疎グラフに向いており、辺の数mに対してO(m log ...

5月16日 03:06 投稿

グラフ理論における第二最短経路

前提知識 グラフの表現方法、最短経路探索アルゴリズム、幅優先探索(BFS)の理解が必要です。 第二最短経路の分類 一般第二経路(同一辺の重複利用可能) 単純第二経路(同一辺の重複利用不可) 厳密/非厳密第二経路(最短経路と等価/非等価) 一般第二経路 配列の最大値・次大値探索と類似した手法を用います。各頂点について最短距離と第二短距離を同時に管理します。 ...

5月14日 18:44 投稿