競技プログラミングの復習と解法まとめ

7月は主に学校の夏期個人戦に参加し、その他の時間は主に学習やゲームに費やした。 上海大学プログラミングコンテスト 2024 上海地区のコンテストで、結果は芳しくなかった。主に実力不足が原因。 問題E - 無線ソフトウェア日 文字の出現頻度をカウントし、必要な文字数の最小値を求める問題。 #include <bits/stdc++.h> using namespace std; int main() { int ...

5月15日 21:11 投稿

UE5 C++におけるゲーム内アイテムデータ管理とDataTable連携の実装

Unreal Engine 5 でゲーム内のアイテムやリソースデータを効率的に管理するためには、C++ 側で反射システム(Reflection)を有効にしたデータ構造を設計し、エディタ上のデータテーブルと連携させる必要があります。本記事では、アイテム情報を保持する構造体から、それらをゲーム全体で共有するデータ管理クラスまでの実装手順を解説します。 1. 基底クラスとデータ構造 ...

5月15日 18:51 投稿

AIを活用したC++アセンブラ開発の実践

はじめに C++は私の主要なプログラミング言語ではありませんでした。特にC++の学習曲線が急峻であることはよく知られています。それでも、AIを使ってC++プログラムを作成するという挑戦を試みることにしました。結果として、AIは非常に効率的に目標達成を支援してくれました。短時間で簡単なアセンブラを完成させることができたのです。主にNew BingをAIアシスタントとして ...

5月15日 16:57 投稿

C++クラスとオブジェクトの基本

1. クラスとオブジェクト 1.1 クラスの定義 C++では、classキーワードを使ってクラスを定義する。以下はスタックを表すクラスの例である: #include <iostream> using namespace std; class Stack { private: int* _data; int _index; int _maxSize; public: void push() {} void pop() {} }; // セミコロンが必要 メンバー変数には慣習的に ...

5月15日 14:21 投稿

動的計画法による部分列問題の解法

問題1:最長増加部分列 最長増加部分列(Longest Increasing Subsequence, LIS)問題は、与えられた数列から、要素が厳密に増加する順序で並んでいる最長の部分列を見つける問題です。 class Solution { public: int lengthOfLIS(vector<int>& arr) { // 1. DPテーブルの作成 int size = arr.size(); vector<int> dp(size, 1) ...

5月15日 12:10 投稿

QML コーディングにおける Q_PROPERTY 不足問題の解決策

Qt でクライアント向けのアノテーションクラスを実装する際、C++ の主要データを QML に公開するために Q_PROPERTY を多用すると、十数個しか使えないという制限に遭遇しました。 class ImageShow : public QQuickPaintedItem { Q_OBJECT Q_PROPERTY(QJsonObject minio_source READ minio_source WRITE setMinio_source NOTIFY minio_sourceChanged) Q_PROPER ...

5月15日 08:50 投稿

素数和组合问题の解法

問題概要 与えられたn個の整数と整数k(k < n)があり、その中からk個の数を選んで和をとったときに、その和が素数になる組み合わせ数を求める問題。 例としてn=4, k=3で、数列が3,7,12,19のとき、選べる組み合わせは4通りある: 3+7+12 = 22 3+7+19 = 29 7+12+19 = 38 3+12+19 = 34 このうち素数は29のみなので、出力は1となる。 入出力形式 入力形式: 4 3 ...

5月14日 23:45 投稿

C++における二次元配列の実装と操作

二次元配列は、行と列の構造を持つデータ格納機構であり、C++では配列の配列として実現されます。この構造は行列的なデータ処理やゲーム開発、画像処理など、多次元データを扱う場面で広く利用されます。 宣言と初期化 二次元配列は、行数と列数を明示的に指定して宣言します。以下のように、静的サイズで宣言可能です: int grid[5][8]; // 5行8列の整数配列 初期化は ...

5月14日 20:27 投稿

POI2009 PRZ:配列の等価性を判定する階層化ハッシュ手法

問題の定義 本問題は、2つの正整数列 X と Y に対して、再帰的に定義された関数 F(X, Y) の真偽を判定することを目的としています。与えられた関数の構造は以下の通りです。 bool Evaluate(const std::vector<int>& X, const std::vector<int>& Y) { if (GetUniqueSet(X).size() != GetUniqueSet(Y).size()) return false; if (GetUniqueSet(X).si ...

5月14日 14:29 投稿

2次元差分配列を用いたカーペット問題の解法

問題の説明 n x n のグリッド上に m 枚のカーペットが置かれています。これらのカーペットの情報が与えられたとき、各マスが何枚のカーペットで覆われているかを求めてください。 入力形式 第一行に、2つの正の整数 n, m が与えられます。 続く m 行に、それぞれ 2 つの座標 (x1, y1) と (x2, y2) が与えられます。これは、左上のマスが (x1, y1)、右下のマスが ( ...

5月14日 09:46 投稿