eJOI競技プログラミング問題解説

eJOI(European Junior Olympiad in Informatics)の過去問から、いくつかの問題を解説します。 eJOI2017 A - Magic 問題概要 長さ\(n\)の文字列\(a\)が与えられ、使用される文字の種類数を\(|\Sigma|\)とします。部分文字列が「魔法的」であるとは、その部分文字列内に全ての種類の文字が少なくとも1回含まれ、かつ全ての種類の文字の出現回数が等しいことを意味します。 ...

8月1日 00:11 投稿

線形リストの基礎と実装:配列とリンクリストの比較

2.1 線形リストの定義と基本操作 2.1.1 線形リストの定義 線形リストとは、同一データ型を持つn個のデータ要素からなる有限の順序付き集合である。nを表の長さと呼び、n=0のとき空の線形リストとなる。線形リストをLとすると、一般的にL=(a1, a2, ..., an)と表される。 ここでa1は唯一の「最初」のデータ要素(先頭要素)、anは「最後」のデータ要素(末尾要素)である。 ...

7月31日 02:50 投稿

アルゴリズム学習ノート:C/C++基礎と基本的なアルゴリズム

1 C/C++の基礎知識 1.1 無限大の定義(INF) 整数型の無限大を表す定数の定義方法: const int INF = 0x3f3f3f3f; 1.2 scanf関数の使い方 一般的なデータ型のscanfフォーマット指定子: データ型フォーマット指定子 int%d long long%lld float%f double%lf char%c 文字列(char配列)%s 1.3 実用的な出力フォーマット 1.3.1 %md %mdは、int型変数がm桁に満たない ...

7月30日 08:28 投稿

Javaのコレクションフレームワーク - ArrayListの内部実装

Javaのコレクションフレームワーク - ArrayListの内部実装 概要 ArrayListは、配列に基づいており自動拡張可能な動的配列です。その自動拡張機能により、開発において最も一般的に使用されるコレクションクラスの一つとなっています。 クラス図 ArrayListが実装しているインターフェースや継承している抽象クラスは以下の通りです。 java.util.List - リストとしての基本 ...

7月30日 04:13 投稿

第5回藍橋杯 C++ B級プログラミングコンテスト問題解説

1. ビールと飲料の購入 解法: 全探索(ブルートフォース) ビール(1缶2.3元)と飲料(1缶1.9元)の合計金額が82.3元。ビールの本数が飲料より少ない条件で計算します。浮動小数点計算の誤差を避けるため、10倍して整数で処理します。 #include <iostream> using namespace std; int main() { for (int beer = 0; beer <= 823 / 23; ++beer) { for ( ...

7月29日 17:12 投稿

アルゴリズム競技問題集:動的計画法とデータ構造の応用

問題A:連続要素の除去 この問題では、与えられたシーケンスから連続する重複要素を除去する必要があります。 解法:連続する同じ要素を1つにまとめることで、シーケンスの長さを最小化します。 #include <iostream> #include <vector> using namespace std; typedef long long ll; void process() { int elements; cin >> elements; ...

7月29日 16:55 投稿

単方向連結リストの実装と操作

目録 定義 単方向連結リストの実装 ヘッダーノードなし ヘッダーノードあり 単方向連結リストの空判定(Empty) ヘッダーノードなし ヘッダーノードあり 単方向連結リストの位置指定挿入(ListInsert) ヘッダーノードなし ヘッダーノードあり 指定ノードの後方挿入操作(InsertNextNode) 指定ノードの前方挿入操作(InsertPriorNode) 単方向連結リストの位置指定削除(L ...

7月27日 01:05 投稿

データ構造とアルゴリズム(C言語):線形リストの実装と応用

線形リスト(linear list)は、同じ特性を持つn個のデータ要素の有限シーケンスです。線形リストは実際のアプリケーションで広く使用されているデータ構造であり、一般的な線形リストには順序リスト、連結リスト、スタック、キュー、文字列などがあります。 線形リストは論理的には線形構造であり、連続した直線状の構造を持ちます。しかし、物理的な構造としては必ずしも ...

7月26日 17:02 投稿

Pythonのセット型とその活用方法

はじめに Pythonでは、セット型(set)は順序を持たず、重複しない要素の集まりです。各要素は一意であるため、同じ要素が複数存在することはできません。セット型は、要素の存在確認や重複削除などに広く使われます。本記事ではPythonにおけるセット型の概念、特徴、操作方法について詳しく説明し、実際の応用例を紹介します。 セット型の基本特性 順序なし:要素の並び ...

7月26日 03:27 投稿

連結リスト操作の基礎

要素の削除 連結リストの操作において、先頭ノードと他のノードの削除処理は異なります。他のノードは前のノードを介して削除されますが、先頭ノードには前のノードが存在しません。 先頭ノードを削除するには、単にヘッドポインタを次のノードに移動します。しかし、この特別なケースを避けるためにダミーヘッドノードを使用すると、全てのノードで一貫した削除方法が適用 ...

7月24日 21:23 投稿