七夕祭プログラミングコンテスト問題

A. 神話キャラクター 解決アプローチ:各要素についてソート後の隣接要素を確認します。二分探索により位置を特定し、左右の値が条件を満たすか判定します。 #include <bits/stdc++.h> using namespace std; using ll = long long; #define YES(x) (x ? "Yes" : "No") const int MOD = 1e9 + 7; int main_val[100005], backup_val[100005]; vo ...

8月10日 05:07 投稿

配列の探索とソートアルゴリズム

探索 1. 二分探索 前提条件:配列は事前に昇順にソートされていること 基本概念:目的値と中央要素を比較して探索範囲を半分にする アルゴリズム手順 初期化処理: left = 0; right = 配列長 - 1; pivot = left + (right - left)/2; left <= right の間繰り返す arr[pivot] と target を比較する target == arr[pivot] → pivot を返却 target > arr[pivot] → le ...

8月1日 16:39 投稿

配列内の重複要素を特定するアルゴリズム

以下は、C++における配列サイズの取得に関するコード例である。関数に渡された配列はポインタに変換されるため、sizeof演算子は元の配列サイズではなくポインタのサイズ(通常4または8バイト)を返す点に注意が必要である。 #include <cstdio> size_t get_array_size(int arr[]) { return sizeof(arr); // 実際にはポインタのサイズが返される } int main() ...

7月18日 21:11 投稿

JOI 2013 国内予選最終ラウンド解説

問題1:交互配列の最長連結区間 与えられた 0-1 列において、隣接要素が交互に変化する(例:01010)最大長の連続部分列を求める。ただし、1つの「交互セグメント」を反転することで、より長い連続交互列を得られる可能性がある。 まず、入力列を交互性に基づいて分割し、各セグメントの左右端点を記録。その後、隣接する3つのセグメント(左・中・右)を結合した長さを評 ...

7月14日 01:06 投稿

C++ 初級基礎:標準ライブラリ活用法

C++ の基本的な標準ライブラリ機能について、実践的な観点から整理します。 1. 入出力と基本設定 #include <bits/stdc++.h> using namespace std; // 入出力同期の非同期化(入出力PEED向上) ios::sync_with_stdio(false); cin.tie(nullptr); C++ のストリーム(cin/cout)と C 言語の関数(scanf/printf)は混在を避けることが推奨されます。混在すると入出力 ...

6月3日 17:42 投稿

競技プログラミング問題集:基本アルゴリズムの実践

最短区間カバー問題 指定された種類数を満たす最小連続区間を探索する問題です。スライディングウィンドウ手法を用い、要素の出現頻度を動的に管理しながら最適解を導出します。 #include <bits/stdc++.h> using namespace std; int main() { int n, m; cin >> n >> m; vector<int> cookTypes(n); for (int i = 0; i < n; ++i ...

5月31日 19:21 投稿

配列と連結リストの基本アルゴリズムと実装例

配列の二分探索 昇順に整列された重複のない配列から要素を検索する際、二分探索は効率的な手法です。左閉右閉区間と左閉右開区間の2つのアプローチを解説します。 左閉右閉区間アプローチ class Solution { public: int binarySearch(const vector<int>& arr, int target) { int low = 0; int high = arr.size() - 1; while (low tar ...

5月28日 21:40 投稿

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

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

5月13日 22:32 投稿