AtCoder ABC336 演習:桁制約付き DP と双方向 BFS
E - 数字の和で割り切れる数
この問題では、与えられた正整数 \(N\) 以下の自然数のうち、その桁の和で割った余りが 0 となる数を求める必要があります。
通常の桁 DP では、剰余を状態として維持するのは容易ですが、今回のように「剰元の基準(桁の和)」自体が変化する場合、直接的な DP では困難になります。そこで、桁の和(モジュロ)を先に見積もるアプローチを取 ...
8月13日 02:59 投稿
OpenCV実践ガイド:画像処理の基礎から応用まで
開発環境
Ubuntu 19.04
Visual Studio Code 1.37.0
OpenCV 3.4.7
CMake 3.13.4
OpenCV学習の道のりとして、まず基本的な画像処理から始めましょう。
画像の読み込みと表示
基本的な画像操作は次のようになります:
Mat inputImage = imread("画像ファイルパス");
namedWindow("表示ウィンドウ");
imshow("表示ウィンドウ", inputImage);
...
8月13日 01:36 投稿
配列データ構造と基礎的なアルゴリズム手法の解説
配列の検索および演算テクニック
配列は連続したメモリ領域を使用する基本的なコレクションであり、インデックスによる高速アクセスが可能です。ここでは、配列を扱う際の代表的なアルゴリズムパターンとその実装について解説します。
1. 二分探索アルゴリズムの境界条件
ソートされた配列から特定の値を検索する際に、二分探索法が用いられます。実装上の注意点として、 ...
8月12日 23:48 投稿
アルゴリズム解説:組合せ数学、基環木DP、および数論篩の実装
問題1:グリッド経路の組み合わせと寄与計算
本問はグリッド上の経路数と各初期値が最終結果に与える寄与度を計算する問題です。始点から終点 $(N, M)$ への移動において、右と上のみ移動可能と仮定します。各地点 $(i, j)$ から $(N, M)$ への移動経路の総数は、右への移動回数と上への移動回数の組み合わせにより $\frac{(N-i + M-j)!}{(N-i)! (M-j)!}$ で求められます。 ...
8月11日 17:39 投稿
プログラミングコンテスト模擬試験問題集
1. 約数の個数
2. 最大部分行列問題
総当たり法による解法
#include <iostream>
using namespace std;
// 部分行列の合計を計算
int grid[40][30];
long long maxSum;
int main() {
// 30x20のグリッドを読み込む
for(int row = 1; row <= 30; row++) {
for(int col = 1; col <= 20; col++) {
cin >> grid[row][col];
...
8月10日 22:56 投稿
C++ で作る強化された連絡先管理システム
概要
この記事では、基本的な C++ による連絡先管理アプリケーションを拡張・改善するプロセスについて説明します。元の実装にはいくつかの課題がありました。それらを解決することで、より堅牢でユーザーフレンドリーなシステムへと進化させます。
主な改善点
以下の問題点を修正しました:
終了処理の不備:「0」を選択してもループが継続し、プログラムが終了しな ...
8月10日 15:05 投稿
C/C++でバイナリファイルを読み書きする
標準ライブラリ関数を用いたC++でのバイナリファイル操作について解説します。特に、Android開発など、Windows APIやサードパーティ製ライブラリの使用が制限される環境で役立つ手法に焦点を当てます。
バイナリデータの逐次読み書き
以下のコードは、バイナリデータをチャンクごとに読み書きする基本的な方法を示しています。
#include <fstream>
#include ...
8月9日 15:48 投稿
C++メモリ管理の極意: ニュービーよりエキスパートへの道
C/C++メモリ構造解析
1.メモリ領域の構造
C++プログラムのコンパイルおよび実行時に、メモリは以下の領域に分割され、それぞれ異なる役割を担っています。C++における基本的なメモリ構造は以下の通りです:
1.スタック(Stack):
用途:ローカル変数、関数パラメータ、リターンアドレスなどを格納。
特性:スタックメモリの割り当てと解放はシステムが自動管理し、LIFO( ...
8月9日 05:37 投稿
C++ オブジェクト指向プログラミング:カプセル化・深いコピー・動的メモリ管理の実践
課題1:コンポジションによるGUIコンポーネントの設計
ボタンとウィンドウの関係をコンポジション(has-a関係)で表現します。WindowクラスがWidgetクラスを含む形で実装します。
Widget.hpp
#pragma once
#include <iostream>
#include <string>
class Widget {
public:
explicit Widget(const std::string &name);
const std::string& na ...
8月8日 14:29 投稿
Mojo C++ Bindings API リファレンス
概要
Mojo C++ バインディング API は、C++ システム API を拡張し、メッセージパイプ上での通信をより自然な形で行えるようにするプリミティブを提供します。Mojom IDL とバインディングジェネレータが生成するコードと組み合わせることで、プロセス内・プロセス間を問わず、インターフェースのクライアントと実装を容易に接続できます。
本ドキュメントでは、コード例を ...
8月8日 07:11 投稿