ABC379 問題解説:C・D・E・F

C問題:石の山の配置 石を後方にしか移動できないという制約下で、目標の配置が可能かどうかを判定し、最小移動回数を求める問題です。 条件を満たす配置は一意に定まるため、以下の3点をチェックします。 石の総数がnと一致しない場合は不可能。 最初の山の位置が1でなければ不可能。 途中の位置で、それまでの石の合計数が必要数に満たない場合は不可能。 解 ...

6月22日 21:01 投稿

AtCoder Beginner Contest 397 問題解説と実装アプローチ

第 1 問:温度計 (Thermometer) 体温の読み取り値に基づき、状態を示す整数を出力する単純なシミュレーション問題です。入力された小数点数がどの範囲に属するかを判断します。 解法の方針 温度値を float または double 型で受け取り、以下の条件ロジックで分岐処理を行います。 38.0 以上の場合:レベル 1 37.5 未満の場合:レベル 3 それ以外:レベル 2 実装コード # ...

6月22日 19:14 投稿

AtCoder Beginner Contest 449 解説

今回のAtCoder Beginner Contestは、最近の中でも特に難易度が高いセットでした。以下、D・E・Fの3問について解法を説明します。 D - Make Target 2 \( \max(|x|,|y|) \) の扱いを簡単にするため、\( |x| > |y| \) の場合と \( |x| \le |y| \) の場合に分けて計算し、最後に合計します。ここでは \( |x| > |y| \) の場合を示します(もう一方も同様です)。 \( |x| > | ...

6月9日 16:13 投稿

AtCoder ABC389のアルゴリズム実装と解説

問題C: キューによる区間管理のシミュレーション この問題では、列の先頭への追加や末尾からの削除、特定位置の要素へのアクセスを効率的に行う必要があります。全ての要素を個別に保持するとメモリや計算量が膨大になるため、連続する要素を「区間」として管理する手法をとります。 各区間について「先頭からの相対距離(開始位置)」と「区間の長さ」を構造体で定義し ...

6月6日 19:20 投稿

AtCoder Beginner Contest 366 の問題解説と実装

はじめに 今回のコンテストでは問題Eに大部分の時間を費やすことになり、残り15分でようやく正解にたどり着くという危ない場面でした。緑色レベルの問題にも苦戦するようでは、まだまだ実力不足を感じます。 A - Election 2 高橋君と青木君のどちらかが過半数の票を獲得したかどうかを判定するシンプルな問題です。 #include <iostream> using namespace std; ...

6月4日 17:22 投稿

AtCoder初心者コンテスト443 解説

D - パンライン問題 この問題は数学的に抽象化することで簡単に解くことができます。 #include <bits/stdc++.h> using namespace std; using ll = long long; int main() { ll t; cin >> t; while (t--) { ll n, sum = 0; cin >> n; vector<ll> arr(n); for (auto &x : arr) { cin >> x; sum += x; ...

6月1日 19:15 投稿

AtCoder Beginner Contest 387 参加記録と解法まとめ

A - Happy New Year 2025 2つの整数 $A$ と $B$ が与えられます。$(A + B)^2$ を出力するだけの問題です。計算結果が整数型の範囲に収まるか注意が必要ですが、今回の制約では問題ありません。 #include <iostream> using namespace std; void solve() { long long val1, val2; if (cin >> val1 >> val2) { long long combined = val ...

5月30日 22:13 投稿

AtCoder Beginner Contest 389 解法解説

A - 9x9 問題概要 1桁の数字同士の乗算結果を求める。 解法 入力文字列から数値を抽出して掛け算する実装を行えばよい。 実装コード #include <bits/stdc++.h> using namespace std; #define int long long typedef pair<int, int> pii; const int mxn = 1e6 + 5; void solve() { string input; cin >> input; int a = input[0] - '0'; ...

5月28日 14:34 投稿

AtCoder Beginner Contest 310 各問題のアルゴリズム解説とC++実装例

A: 別の注文方法 料理とセットで購入する場合、特定のドリンクが定価 \(P\) から割引価格 \(Q\) へ変更される。セット購入しない場合は、別のドリンクリストから任意の価格のものを選ぶことができる。支払い額を最小化する問題である。 実装方針は単純である。セット割引適用時の支払い額 \(Q + \min(A)\) と、割引なしの定価 \(P\) を比較し、小さい方を出力すればよい。\ ...

5月22日 01:48 投稿

ABC347 プログラミングコンテスト問題解説

A link 很简单 配列を順にアクセスし、\(k\)で割った余りが\(0\)かどうか判定する。余りが\(0\)の場合、\(a_i/k\)を出力する。 クリックしてコードを表示``` #include<bits/stdc++.h> using namespace std; int n, k; int data[105]; int main() { cin >> n >> k; for(int i = 1; i <= n; ++i) { cin >> data[i]; if(data[i] % k == 0) ...

5月19日 18:09 投稿