七夕祭プログラミングコンテスト問題
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 投稿