動的計画法によるナップサック問題と等和分割問題の解法
46.研究材料の持ち運び問題
動的計画法を用いたナップサック問題の解法について解説する。`dp`配列を定義し、`dp[i][j]`はi個の物品をjの容量で運ぶ際の最大価値を表す。漸化式は以下の2つのケースに分けられる:
1. 物品を入れられる場合:`dp[i][j] = max(dp[i-1][j], dp[i-1][j-weight[i]]+value[i])`
2. 物品を入れられない場合:`dp[i][j] = dp[i-1][j]`
初期化処 ...
7月8日 20:21 投稿
Qtでマウスドラッグによる矩形移動を実装する
Qtでドラッグ可能な矩形を実現するには、QWidgetを継承したカスタムクラスを作成し、マウスイベントのハンドリングと描画処理を統合します。以下は、座標変換を正確に扱い、親ウィジェット内での安定したドラッグ動作を保証する改良版実装です。
まず、DraggableBoxという名前のカスタムウィジェットを定義します。このクラスは、ドラッグ中の相対オフセットを保持し、親 ...
7月8日 20:17 投稿
AtCoder Beginner Contest 338 解説
A - Capitalized?
英字からなる文字列 $S$ が与えられる。先頭が大文字で、残りがすべて小文字であるかを判定する。
単純に先頭文字が 'A'~'Z' の範囲にあり、他の文字がすべて 'a'~'z' の範囲にあるかをチェックすればよい。
#include <bits/stdc++.h>
using namespace std;
int main() {
string s;
cin >> s;
bool ok = isupper(s[0]);
for (in ...
7月8日 19:49 投稿
Criterionのクロスプラットフォーム互換性の深い分析:Linux、Windows、macOSでの完全サポート
Criterionのクロスプラットフォーム互換性の深い分析:Linux、Windows、macOSでの完全サポート
Criterionは21世紀向けのクロスプラットフォームCおよびC++ユニットテストフレームワークであり、現代的なソフトウェア開発要件に特化して設計されています。シンプルなAPI、豊富なアサーションライブラリ、詳細なテストレポートを提供しつつ、Linux、Windows、macOSの主要な3 ...
7月8日 16:35 投稿
Codeforces Round 1020 (Div. 3) 解説
A. Dr. TC
Dr. TC は患者の知能をテストするために、以下のような問題を設計しました。
長さが \(n\) の二進数文字列 \(s\) を作成します。
この文字列 \(s\) を元に、\(n\) 個の二進数文字列 \(a_1, a_2, \dots, a_n\) を生成します。具体的には、\(a_i\) は \(s\) の第 \(i\) 文字を反転(1 なら 0 に、0 なら 1 に)したものです。
これらの文字列を \(n \times n\) ...
7月7日 22:51 投稿
C++選択ソートの動作原理
一、アルゴリズムの基本手順
初期化:配列を整列済み領域(空)と未整列領域(全要素)に分割
最小値検出:未整列領域内で最小値の位置を探索
交換処理:検出された最小値と未整列領域の先頭要素を交換
範囲更新:整列済み領域を1要素拡大、未整列領域を1要素縮小
繰り返し:未整列領域が1要素になるまで手順2~4を実行
二、C++実装例
#include <iostream>
using n ...
7月7日 22:43 投稿
002 ヘルローワールド
C++初心者向け基礎講座002 ヘルローワールド
本セクションには一部予備知識が必要な内容が含まれます
基本構文フレームワーク
新規作成したソースコードファイルは空です。この状態では実行できません。
C++では以下のような基本的な構文フレームワークを使用します。
#include <iostream>
using namespace std;
int main()
{
return 0;
}
このコードの各行につ ...
7月7日 18:24 投稿
数列分块技術の入門と問題解説
数列分块入门 1
長さ n の数列を管理し、区間加算と単一点クエリを行う。
解法
ブロックサイズを sqrt(n) に設定し、各ブロックに対して遅延評価を使用する。
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 50000 + 1, SQR = 231;
int a[MAXN], bel[MAXN];
int tag[SQR], lp[SQR], rp[SQR];
void updateBlock(int l, int r, int val) {
...
7月7日 18:04 投稿
ROS 2トピック通信の概要と実装手順
トピック通信とは
ROS 2において、トピック通信は最も一般的な通信方式の一つです。この方式は「パブリッシャ・サブスクライバモデル」に基づいており、あるノードがメッセージを送信(パブリッシュ)し、別のノードがそのメッセージを受信(サブスクライブ)します。
主な利用シーン
センサー情報の共有(例:LiDARデータの配信)
ロボット制御におけるリアルタイム ...
7月7日 01:45 投稿
C++ STLにおける複数部分文字列の効率的置換機構
STLの文字列置換機能概要
C++標準ライブラリ(STL)では、文字列操作のうち置換処理について、複数の階層と手法が提供されています。主なアプローチは以下の2つです:
std::basic_string(std::string, std::wstringなど)のメンバー関数による高度な文字列操作
<algorithm>ヘッダに定義されたジェネリックなアルゴリズム
これらの実装は、Microsoft Visual C++の ...
7月6日 22:19 投稿