FHQ-Treap の学習ノート

FHQ-Treap の学習ノート Treap は Tree と Heap を組み合わせたデータ構造です。 Treap は弱いバランスの取れた二分探索木であり、カーネルツリーとして見なせます。各ノードには (Key, Value) という2つの値を持ち、Key は二分探索木の性質を満たし、Value はヒープの性質を満たします(通常は最小ヒープ)。Key は実際の情報であり、Value はランダムな値で、木の高さが ...

6月10日 16:59 投稿

データ構造:線形リスト

問題3156 【基礎15.例題1】生徒番号の照会 問題概要 最大2×106人の生徒が教室に入っており、それぞれの生徒番号(1〜109の範囲)が教室に入った順序で与えられる。その後、最大105回にわたって、何番目に教室に入ったかを尋ねる質問が行われる。各質問に対する答えを出力する必要がある。 入力形式 n m s1 s2 ... sn q1 q2 ... qm nは生徒数、mは質問の回数を表す。siはi番 ...

6月8日 22:54 投稿

ソート済み配列を平衡二分探索木に変換する方法

二分探索木の中間順走査は昇順シーケンスを生成します。問題で与えられた配列は昇順でソートされているため、この配列は二分探索木の中間順走査シーケンスであることが保証されます。 1. 二分探索木の中間順走査が与えられた場合、二分探索木を一意に決定できるか? 答えは否定的です。もし二分探索木の高さバランスを要求しない場合、任意の数字を根ノードとして選択で ...

6月8日 21:28 投稿

ソート済み2次元行列における効率的な要素探索

m x n のソート済み2次元行列から特定のターゲット値を効率的に探索するアルゴリズムについて考察します。 この行列は、以下の特殊な特性を持っています。 各行の要素は左から右へ昇順に並んでいます。 各列の要素は上から下へ昇順に並んでいます。 この特性を最大限に活用することで、ブルートフォース探索(O(mn))を避け、O(m+n)という線形的な時間計算量で高速な検索 ...

6月8日 20:25 投稿

C言語で実装する動的配列(ベクター)

C言語で実装する動的配列(ベクター) C言語におけるデータ構造の中でも、特に柔軟性の高い「動的配列」について解説します。動的配列は、プログラムの実行中に要素数が増減する可能性のあるコレクションを扱う際に非常に便利です。この記事では、C言語で動的配列、いわゆる「順序リスト」をゼロから実装する方法を詳しく見ていきます。 動的配列の基本概念 動的配 ...

6月8日 20:18 投稿

アルゴリズム問題の解決法 - アルゴリズム思考

アルゴリズム思考のプロセス この質問を立てているということは、あなたは既にアルゴリズムスキル向上の重要なステップを踏んでいるということです。 問題解決そのものが目的ではなく、「アルゴリズム思考のプロセス」が鍵となります。 以下の実践可能な「アルゴリズム思考トレーニングシステム」をまとめました。すぐに試してみてください: 一、考え方の変革:答えを探す ...

6月7日 19:34 投稿

Codeforces Round 1002 (Div. 2)

A - 二つの配列と要素の組み合わせ 問題文 2つの長さnの配列a,bが与えられる。この配列の各要素は少なくとも2回以上出現する。配列aとbを並べ替えて、c_i = a_i + b_iとなる長さnの配列cを作る。このcに3種類以上の異なる要素が存在するか判定せよ。 解法 n ≥ 3のため、aとbのそれぞれに含まれる異なる要素の数を確認する。aが1種類でbが2未満、または逆の場合にのみ「No ...

6月6日 22:31 投稿

六方云技術試験のまとめ

(1)問題文 関数の外部で宣言されたグローバル静的変数は、外部変数と呼ばれます。したがって、正解はcです。 (2)知識ポイント staticキーワード (1)関数外のグローバル変数 変数が関数の外部で定義され、staticキーワードで修飾されている場合、その変数のスコープは定義されたソースファイル内に限定されます。他のソースファイルからはこの変数に直接アクセス ...

6月6日 19:27 投稿

ビットマップとビットセット:効率的なデータ処理の基礎

ビットマップの基本的な概念は、ある要素に対応する値を1ビットで表記するというものです。ここで、キーはその要素自体となります。 ビット単位でデータを保存するため、記憶領域を大幅に節約できます。(重要ポイント:記憶領域の節約) 必要条件 ==== 例えば、20億個のランダムな整数の中に特定の数mが存在するかどうかを見つけるという要件を考えてみましょう。32ビッ ...

6月5日 22:55 投稿

Javaアルゴリズム速習ガイド

Javaアルゴリズムクイックリファレンス リスト 初期化 List<Integer> 数値リスト = new ArrayList<>(); 主なメソッド add(Object 要素); size(); get(int インデックス); isEmpty(); contains(Object o); remove(int インデックス); マップ マップはキーと値のペアを保持するコレクションです。 初期化 Map<String, Integer> マップ = new HashMap< ...

6月4日 16:11 投稿