鉄道の列車スケジューリング問題の効率的解法
鉄道駅の列車スケジューリングシステムでは、入口軌道と出口軌道の間にN本の平行軌道が配置されています。各列車は入口から任意の軌道を選択して進入し、最終的に出口から離脱します。例えば、入口で{8, 4, 2, 5, 3, 9, 1, 6, 7}の順番で待機している9本の列車がある場合、これらを番号の降順で出口から離脱させるために必要な最小限の平行軌道数を求める必要があります。 ...
6月12日 18:44 投稿
Pythonにおける辞書型(dict)の基本操作と活用方法
Pythonの辞書型(dict)は、キーと値をペアで保持する可変長のマッピング型データ構造です。キーは一意である必要があり、効率的なデータ検索や管理に適しています。
辞書の定義
辞書は波括弧 {} を使用して定義します。キーと値はコロン : で区切り、ペアをコンマ , で並べます。キーが重複した場合、後から定義された値で上書きされます。
# 辞書の作成例
u ...
6月12日 18:15 投稿
PythonとVBAによる相対的なランキングの実装
相対的なランキングの応用
相対的なランキングは現実世界で多くの応用があります。主なものは以下の通りです。
スポーツ競技のランキング: スポーツ競技では、相対的なランキングが選手やチームのパフォーマンスを評価するために頻繁に使用されます。例えば、サッカーのリーグ戦では、勝利数、得点、失点などの指標に基づいてチームのランキングが決定されます。
...
6月12日 17:53 投稿
Javaで学ぶリンクリストの基本操作とアルゴリズム
本日の課題
LeetCode 203. リンクリスト要素の削除
LeetCode 707. リンクリストの設計
LeetCode 206. リンクリストの反転
基本概念の整理
ノードの追加処理では、新しいノード(current.next)を先に処理し、古いノード(previous.next)を後から処理します。
ノードの削除では、現在のノードを削除するには、その前のノードを知る必要があります。そのため、currentとp ...
6月11日 21:03 投稿
Go言語のインターフェースの内部構造を理解する
インターフェースとは
Go言語では、インターフェース(interface)は抽象的な型定義として使用されます。インターフェースはメソッドのシグネチャを定義しますが、具体的な実装は含まれません。特定のインターフェースを実装した任意の型は、そのインターフェースとして扱うことができます。これにより、異なる型を統一的な方法で処理でき、コードの柔軟性、拡張性、およ ...
6月10日 21:28 投稿
C++プログラミングコンテスト問題集と解答例
L1-1 挨拶出力
解法
指定されたテキストをそのまま出力する。
実装例
#include <iostream>
using namespace std;
int main() {
cout << "ありがとう!\\(>_<)/" << endl;
return 0;
}
L1-2 平均速度計算
実装例
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int distance, time;
cin & ...
6月10日 20:29 投稿
データ構造とアルゴリズムの実装テクニック
データ構造
TreeSetで特定の値より大きい最初の要素を検索
TreeSet<Integer> treeSet = new TreeSet<>();
Integer targetValue = treeSet.higher(searchKey);
2次元配列の降順ソート
Arrays.sort(2dArray, (first, second) -> (second[0] - first[0]));
最小ヒープの実装
PriorityQueue<int[]> minHeap = new PriorityQueue<>((arr1, arr2) ...
6月10日 18:00 投稿
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 投稿