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

河川の岩場問題:二分探索による最適解

問題リンク https://www.luogu.org/problemnew/show/P2678 問題背景 年一度の「岩場飛び」大会が開催されます! 問題説明 この大会は一直線の川で行われ、川の中には大きな岩が点在しています。主催者はすでに2つの岩をスタート地点とゴール地点として選定しました。スタートとゴールの間にはN個の岩(スタートとゴールを含まない)があります。競技中、参加者はスター ...

5月19日 12:57 投稿

Codeforces Round 895 (Div. 3) 解法概要

CF1872B 通路の限界 問題概要 一列に並んだ部屋のうち、いくつかには罠があります。各罠のある部屋には、到達可能な時間の制限があります。プレイヤーは1番目の部屋から最大で何番目の部屋まで往復できるかを求めます。 解法 各罠部屋の到達可能な最大位置を計算します。この位置は、罠の発生時間の半分を基準に計算されます。すべての罠部屋を距離順にソートし、途中で到 ...

5月18日 19:20 投稿

競技プログラミング問題解説:5つのアルゴリズム問題の実装例

P1628 合并序列 - 文字列のマージ 指定されたプレフィックスで始まるすべての文字列をマルチセットに格納し(重複を許可し、自動的にソートされる)、出力します。 #include <iostream> #include <vector> #include <string> #include <set> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); in ...

5月18日 16:12 投稿

等しい要素をマージするアルゴリズムの実装

問題概要 配列内の等しい要素をマージする問題について、2つの異なるアプローチを解説する。 アプローチ1: 優先度付きキューを使用 優先度付きキューを用いて、値とインデックスを管理する方法。以下の手順で処理を行う: すべての要素を値とインデックスのペアとしてキューに追加 キューの先頭から2要素を取り出し、値が等しければ和を計算して再挿入 等しくなけ ...

5月18日 15:30 投稿

Codeforces Round #627 解法解説

A - Yet Another Tetris Problem n個の整数a_iが与えられます。各操作では、任意のiについてa_iを2増やすか、すべてのa_iを1減らすことができます。すべての値を0にできるか判定してください。 解法:すべての値の偶奇が一致する場合のみ可能です。 #include <iostream> using namespace std; void solve() { int n, first, val; cin >> n >> first; fi ...

5月17日 19:21 投稿

競技プログラミング向けアルゴリズム備忘録

メモリ使用量の見積もり プログラムが使用するメモリ容量を概算する方法: 1 MB = 1024 × 1024 バイト int 型は 4 バイト → 必要メモリ (MB) = (int の要素数 × 4) / (1024 × 1024) 他のデータ型も同様に、各要素のバイト数を掛け合わせて計算する。 実行時間の計測(C++) CPU時間を用いてコードの実行時間を計測する例: #include <ctime> #include <iostream ...

5月16日 05:33 投稿

競技プログラミングの復習と解法まとめ

7月は主に学校の夏期個人戦に参加し、その他の時間は主に学習やゲームに費やした。 上海大学プログラミングコンテスト 2024 上海地区のコンテストで、結果は芳しくなかった。主に実力不足が原因。 問題E - 無線ソフトウェア日 文字の出現頻度をカウントし、必要な文字数の最小値を求める問題。 #include <bits/stdc++.h> using namespace std; int main() { int ...

5月15日 21:11 投稿

2次元差分配列を用いたカーペット問題の解法

問題の説明 n x n のグリッド上に m 枚のカーペットが置かれています。これらのカーペットの情報が与えられたとき、各マスが何枚のカーペットで覆われているかを求めてください。 入力形式 第一行に、2つの正の整数 n, m が与えられます。 続く m 行に、それぞれ 2 つの座標 (x1, y1) と (x2, y2) が与えられます。これは、左上のマスが (x1, y1)、右下のマスが ( ...

5月14日 09:46 投稿

AtCoder Beginner Contest 318 問題分析とC++解法

A - Full Moon (満月) この問題は、N日目までの期間において、最初の満月がM日目に見え、その後P日ごとに満月が見える場合に、合計何回満月が見えるかを数えるものです。つまり、M, M+P, M+2P, ...という等差数列の項がN以下になるものがいくつあるかを求めます。 まず、N日目がM日目よりも前であれば、満月は一度も見えません。この場合、回数は0です。 N日目がM日目以降 ...

5月13日 23:06 投稿