競技プログラミング問題集:文字列処理、ゲーム理論、データ構造、グラフ理論

問題1:文字列処理 - 文字と数字の間に空白を挿入 文書内の隣接する英字と数字の間に空白を追加する問題である。文書の最初と最後の文字は空白ではないことが保証されている。 getlineを用いて1行全体を読み込み、文字を順に走査しながら条件に合わせて空白を挿入する。 実装コード #include <iostream> #include <string> #include <cctype> using ...

9月6日 19:39 投稿

AtCoder ABC369 のアルゴリズム解説

A. 369 整数 $C$ が存在して $A, B, C$ が等差数列となる条件は、$A+B$ が偶数であることです($C = (A+B)/2$ が整数であることと同値)。特別な場合として、$A=B$ であれば数列の長さは1となるため、答えは1です。それ以外の場合、$A+B$ が偶数ならば $A$ と $B$ の間に整数が1つ、$A$ と $B$ の外側に整数が1つずつ存在するため、選択肢は3つになります。奇数の場合は $A ...

8月22日 09:01 投稿

Union-Findアルゴリズムによるグラフの連結成分とその応用

無向グラフにおける連結成分の数え上げ この問題では、与えられた無向グラフに含まれる連結成分の総数を求める必要があります。Union-Find(素集合データ構造)を用いることで効率的に解決できます。各ノードを初期状態で自身を親とする木として扱い、エッジを通じてノードを結合していきます。パス圧縮により探索効率を高め、最終的なルートノードの数が答えとなります。 ...

7月16日 16:06 投稿

2023 年度 HDU マルチスクールコンテスト ラウンド 5 完全解答

本稿では、2023 年に開催された HDU 主催の大学生向け競技プログラミング大会(マルチスクール)第 5 回の各問に対するアルゴリズム解説と参考実装を示します。 A. タイフーン接近距離 問題概要 n 個の点によって構成される折線があり、q 回のクエリにおいて指定された座標からこの折線までの最短距離を計算する必要がある。データサイズは n, q ≤ 10^4 程度である。 解 ...

6月22日 20:42 投稿

競技プログラミングにおけるアルゴリズム実装:SMU Autumn 2023 Round 4 解説

A. Access Denied:パスワードの推測と応答時間解析 この問題は、サーバーからの応答時間を利用してパスワードを推測する対話型の課題です。パスワードの最大長は20文字であり、推測した文字列の長さが正解と異なる場合、応答には5msの遅延が生じます。また、文字ごとの照合には9msの遅延が加算されるという仕組みを利用します。 まず、長さ1から20までの文字列を順次送 ...

6月21日 23:00 投稿

第14回 藍橋杯 C/C++ Bグループ 省大会 競技課題の解説と実装

1. 日付統計 (Date Statistics) 8桁の数値が並んだ100個のデータから、2023年に存在する有効な日付(YYYYMMDD形式)がいくつ作れるかをカウントする問題です。部分列として抽出する必要があるため、全探索や動的計画法でアプローチします。このコードは計算済みの結果を出力する例です。 #include <iostream> int main() { // 探索アルゴリズムによって算出され ...

6月9日 22:20 投稿

競技プログラミング問題精選: 考察技法と実装(ICPC/APIO/NOI対策)

P6880 JOI 2020 Final オリンピックバス 有向グラフが与えられる。辺を通るコスト \(C_i\)、1本の辺を反転させるコストを \(D_i\) とする。頂点 \(1\) から \(n\) へ、さらに \(n\) から \(1\) へ移動するとき、辺の反転を高々1回まで許したときの最小コスト和を求めよ。 全ての辺に対して反転を試すのは非効率なので、影響を解析する。\(f(s,t)\) を元のグラフでの \(s\) ...

6月3日 16:05 投稿