JavaScriptによる最大ヒープと最小ヒープの実装
ヒープ(Heap)は、要素の優先度を効率的に管理する抽象データ構造です。実装の基盤となる二分ヒープ(Binary Heap)は、完全二分木の性質を1次元配列で表現することで、メモリ効率とキャッシュ局所性を両立させています。この構造を用いると、要素の挿入や最優先要素の取得・削除は O(log n) の時間計算量で実行可能です。
二分ヒープは「最大ヒープ」と「最小ヒープ」に ...
8月12日 17:06 投稿
七夕祭プログラミングコンテスト問題
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 投稿
C言語による動的配列スタックの実装と基本操作
スタックはLIFO(Last In, First Out)のデータ構造であり、主な操作として初期化、解放、空判定、プッシュ(要素追加)、ポップ(要素削除)、サイズ取得、トップ要素参照が存在する。本実装では、C言語を用いて動的メモリ確保に基づくスタックを3つのファイルで構成し、安全性と拡張性を重視した設計を行う。
ヘッダーファイル:Stack.h
このファイルでは、スタックの抽 ...
7月31日 06:44 投稿
競技プログラミングにおける主要アルゴリズム実装テクニック集
高速入出力と座標圧縮
大量のデータ処理を行う際、標準的な入出力関数はボトルネックになることがあります。以下では、カスタム関数による高速化と、std ライブラリを使用した最適化の両方を示します。
#include <bits/stdc++.h>
using namespace std;
// カスタム関数による高速入力
inline int fastRead() {
int val = 0;
char ch = getchar();
bool ...
7月27日 18:41 投稿
Python 基礎アルゴリズム練習問題集と実装解説
基礎制御構造と論理演算
プログラミングの基礎を固めるために、条件分岐と循環構造を用いた典型的な問題を取り上げます。まずは、特定の数字を組み合わせて条件に合致するパターンを抽出する練習です。
1. 重複のない三位数の生成
1 から 4 までの数字を用いて、重複しない桁を持つ三位数を全て列挙します。
digits = [1, 2, 3, 4]
count = 0
for i in digits:
for j i ...
7月25日 19:38 投稿
Union-Findデータ構造の基礎アルゴリズム
Union-Findデータ構造
基本的なテンプレート実装から始めましょう。
この種の問題は比較的単純で、主要な関数を正しく実装すれば解決できます。
int findRoot(int node){return (node == parent[node] ? node : parent[node] = findRoot(parent[node]));}
豆知識:多くの人はこの関数をFindやfindと命名しますが、私の場合はなぜfindRootという名前を使用しているので ...
7月21日 01:43 投稿
Codeforces Round 1027 (Div. 3) 問題解説(A〜E)
概要
本稿では、Codeforces Round 1027(Div. 3)の問題AからEまでの解法を示す。
問題A:数値構築
問題内容
4桁の整数cが与えられる。整数a(0以上99以下)とb(0以上99以下)を用いて、(a+b)² = c を成立させられるか判定する。
解法
0から√nまでの範囲で遍历し、平方数になるかを判定すればよい。a+b = √c が成立する必要があり、a=0, b=√c で試すだけで十分である ...
7月19日 20:01 投稿
Pythonにおける双方向辞書ライブラリ「bidict」の活用
bidictの概要
Pythonの標準的な辞書(dict)は、キーから値へのマッピングを効率的に行いますが、値からキーを逆引きする場合は、ループ処理などを用いる必要があります。bidictライブラリは、この制約を解消し、キーと値の両方向から高速な検索を可能にする双方向マッピング機能を提供します。
bidictの最大の特徴は、キーと値が1対1(一対一)の関係を維持することです ...
7月15日 00:06 投稿
Redis データ構造と主要コマンドの徹底解説
Redis 共通コマンドの基礎
Redis には数百ものコマンドが用意されていますが、すべてを暗記する必要はありません。Redis の内部機制を理解することで、コマンドの汎用性が見えてきます。ただし、データ構造やコマンドは特定のユースケースに適しており、誤った使用はパフォーマンス低下やアプリケーション障害を招く可能性があります。
キー管理に関するグローバルコマン ...
7月13日 22:54 投稿
Pythonプログラミングにおける基本概念と主要データ構造の設計指針
ソフトウェア開発において、プログラムは「データ」と「アルゴリズム(ビジネスロジック)」の組み合わせで構成されます。効率的な開発を行うためには、言語が提供するデータ型、制御構造、および標準ライブラリの特性を深く理解することが不可欠です。
1. 変数とデータ型の特性
Pythonは動的型付け言語であり、変数はメモリ上のオブジェクトを指し示します。id() ...
7月3日 16:57 投稿