Codeforces Round 999 合併部門における競技プログラミング問題の解説

A - 数列の並べ替えとスコア最適化 長さ n の整数列 a が与えられる。初期値が 0 の変数 s に対して、a の要素を順に加算する。s が偶数になった場合、ポイントを 1 加算した上で s を 2 で割った余り(つまり s % 2)に更新する。この操作を繰り返す中で、得られるポイントの合計を最大化するために、a の要素をどのように並び替えるべきか。 重要な観察として、奇数の個 ...

6月22日 18:23 投稿

Codeforces Round 998 (Div.3) 解説: A-D問題の解法と実装例

コンテスト参加後の復習と解法の整理を行います。問題AからDまでのアプローチとコードをまとめました。 A. Fibonacciness 5要素の数列における最大の「フィボナッチ度」を求める問題です。数列の長さが5であるため、最大でも度は3となります。各位置で成立するフィボナッチ関係の式を検討します。 具体的には、a0+a1 = a2、a1+a2 = a3、a2+a3 = a4の3つの条件が考えら ...

6月22日 17:44 投稿

Codeforces Round #1058 (Div. 2) 問題解説

A - MEX Partition この問題の核心は、配列全体のMEX(Minimum Excluded Value)を求めることに帰着します。与えられた配列 $A$ をいくつかの部分集合に分割し、そのすべての部分集合のMEXが等しくなるための条件を考えます。 $A$ のMEXを $m$ とします。$m$ は $A$ に含まれない最小の非負整数であるため、$m$ より大きい要素は各部分集合のMEX計算において無視できま ...

6月21日 21:20 投稿

Codeforces 1000~1100 第三週の問題解説

部分文字列と部分配列 目的は、文字列 a と b を部分配列として含む最短の文字列を見つけることです。その長さは a と b の長さの合計から、両方で共通する文字数を引いたものです。a は必ず含まれるため、b の各文字が a で順番に現れるかをチェックします。 注意: 部分文字列は連続した文字列ですが、部分配列は順序を保ちつつ連続性は必要ありません。 #include <bit ...

6月13日 22:13 投稿

コーディングテスト演習(一)——Codeforces 784B Santa Claus and Keyboard Check

はじめに 最近、コーディングテストの準備をしており、練習問題をまとめています。 元々はC言語の経験しかありませんでしたが、実際に使用会发现C++の方がテストに向いています。ライブラリ関数も豊富で、より多くの操作をサポートでき、コードを簡潔に記述できます。 例えば、C言語で文字列を定義するにはchar s[1000]が必要ですが、C++ではstring sだけで済みます。 問 ...

5月29日 16:25 投稿

Codeforces ラウンド 970 (Div. 3)

A. サクラコの試験 解法 全探索で解く。 コード #include <iostream> using namespace std; void solve() { int a, b; cin >> a >> b; for (int i = 0; i n; string s; cin >> s; int m = sqrt(n); if (m * m != n) { cout a >> b; long long l = 1, r = 2e9, ans = 0; while (l

5月22日 19:19 投稿

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

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

5月18日 19:20 投稿

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

Codeforces Round 984 (Div. 3) 問題の解説

C. Anya and 1100 問題URL Problem - C - Codeforces 解法 文字列中の特定のパターン「1100」の出現回数を管理する問題です。ある位置の文字を変更したとき、それが「1100」の存在にどのような影響を与えるかを考えます。 変更による影響は三種類あります: 「1100」の個数が1増える 「1100」の個数が1減る 変化なし 変更箇所について、それが「1100」のどの位置(1 ...

5月17日 11:24 投稿

Codeforces Round 859 Div.4 のアルゴリズム解法と実装解説

問題 A: Plus or Minus 問題概要 3つの整数 a, b, c が与えられます。演算子として + または - のいずれかを用いて a と b を結合した結果が c と一致する場合、該当する演算子を出力してください。必ずいずれか一方のみが成立することが保証されています。 解法のアプローチ 単純な条件分岐で対応可能です。和 a + b が c と等しければ + を、等号が成立しなければ必然的 ...

5月13日 22:32 投稿