ABC352コンテスト問題解説

問題A: 停車可能区間の判定 ある区間内に指定された位置が含まれるかを判定する問題です。xとyの大小関係によって、区間の方向が変わる点に注意が必要です。 コード例 #include <iostream> #include <algorithm> int main() { int n, x, y, z; std::cin >> n >> x >> y >> z; bool result = false; if (x ...

7月7日 21:07 投稿

AtCoder Beginner Contest 357 における A から D 問題の解法解説

問題A: Sanitizer N人の人が順番に手を消毒します。各人が必要とする消毒液の量 $H_i$ が与えられ、合計 $M$ 単位の消毒液があるとき、何人目までが完全に手を消毒できるかを求める問題です。 実装としては、配列に格納された各 $H_i$ を順に累積し、その合計が $M$ を超えた時点のインデックスを確認します。累積和が $M$ を超えない場合は、全員が消毒可能です。 #inclu ...

7月1日 16:24 投稿

AtCoder Beginner Contest 333 スolved 解説

概要 AtCoder Beginner Contest 333 の Implement 問題を解説します。難易度は A-D が初心者〜中級者向け、E はGreedy + スタック操作の基礎知识点が必要です。 A - Three Threes 入力された整数 \(n\) を \(n\) 回連続して出力する問題です。 制約が \(1 \le n \le 9\) と非常に小さいため、ループで単に出力すればOKです。 #include <iostream> using namespac ...

6月29日 20:56 投稿

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