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

問題Dの解法 整数配列Aが与えられたとき、他の全ての要素で割り切れない要素の数を求める問題です。配列サイズは最大2×10^5です。 解法としては、各数値の出現頻度を記録し、各要素の約数を調べて他の要素で割り切れるか判定します。重複要素がある場合に注意が必要です。 #include<bits/stdc++.h> using namespace std; const int MAX = 1e6+5; int main() { ...

6月28日 02:43 投稿

AtCoder Beginner Contest 378

A - ペアリング 問題文 4つの数が与えられる。各ステップで同じ値の2つの数字を選んで削除する。この操作を最大何回行えるかを求める。 解法 シミュレーションを行う。 コード コードを表示#include <bits/stdc++.h> using namespace std; #define int long long typedef pair<int, int> pii; const int mxn = 1e6 + 5; void solve() { int a, b, c, d; ...

6月27日 01:13 投稿

AtCoderコンテスト328の問題解説

A: 閾値以下の合計 数値リストから指定された閾値以下の要素の合計を算出します。 #include <iostream> #include <vector> using namespace std; int main() { int num, threshold; cin >> num >> threshold; vector<int> values(num); int total = 0; for (int &val : values) { cin >> val; if (val days[i]; int base = i ...

6月25日 22:30 投稿

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 投稿