C++による競技プログラミング問題の解決アプローチ

基本的な比較計算 二つの整数の積を比較する問題では、直接的な計算を用いる。 #include <iostream> int main() { long long w, x, y, z; std::cin >> w >> x >> y >> z; std::cout numA >> numB; std::cout 1) isCritical[node] = true; } int main() { int cols; cin >> cols; string rowA, rowB; cin >> rowA >> rowB; i ...

6月28日 22:57 投稿

2023年上海理工大学校内選手大会 A-D問題の解法

はじめに 本記事では、2023年中国大学コンピュータ大会-チームプログラミング天梯大会(GPLT)上海理工大学校内選手大会のA-D問題の解法を紹介します。大会では4問中2問を解き、その後残り2問を追加で解決しました。他の問題についても、一部は他の参加者のソースコードを参考に理解しました。 以下に解いた4つの問題の解法を記載します。 A問題: Xor B問題 問題文は長いで ...

6月28日 21:40 投稿

算術の基本定理 - 素因数分解の理論と実装

算術の基本定理 素数と素因数の基礎概念 算術の基本定理を理解するにあたり、まず基本となる用語を整理しておこう。素数とは、2以上の自然数のうち、1とその数自身以外では割り切れない数を指す。代表的な素数としては2、3、5、7、11などが挙げられる。一方、素因数とは、ある整数を構成する素数のことを意味する。例えば、12という数は2×2×3という積で表わされるが、この ...

6月28日 20:09 投稿

AtCoder Beginner Contest 170の問題解説と実装

問題Dの解法 整数配列Aが与えられたとき、他の全ての要素で割り切れない要素の数を求める問題です。配列サイズは最大2×10^5です。 解法としては、各数値の出現頻度を記録し、各要素の約数を調べて他の要素で割り切れるか判定します。重複要素がある場合に注意が必要です。 #include<bits/stdc++.h> using namespace std; const int MAX = 1e6+5; int main() { ...

6月28日 02:43 投稿

二分探索と二重ポインタの基本テクニック

二分探索 × 復習時の重要ポイント midの計算時にint mid = left + (right - left) / 2;を使用して、int mid = (left + right) / 2;による整数オーバーフローを防ぐ必要がある 通常の検索、左境界、右境界はすべて左閉じ右閉じ区間を使用可能。閉区間のright = arr.length-1と開区間のright = arr.lengthの違い、およびwhileループでの<=と<の使い分けに注意 3種 ...

6月28日 01:20 投稿

Javaによるテキストクラスタリングの実装

中文理解においてcarrot2が不十分であるため、ネットワーク上のリソースを参考に、このコードを提供します。 この実装では、文字や語の出現頻度を計算し、スコアを付与して、最も重要な語彙を抽出する方法を取りました。以下は実行可能なコードです。 ClusterBuilder.java /** <br></br>* * @author * @version 作成日時:2011-3-8 午後02:02:36 * クラスタ ...

6月27日 22:07 投稿

文字配列の反転操作

問題概要 文字配列を反転させる関数を実装します。入力は文字配列 s で、以下の条件を満たす必要があります: 追加の配列を割り当てない 入力配列をその場で変更 O(1) の追加メモリのみ使用 入力例 <strong>入力:</strong>s = ["h","e","l","l","o"] <strong>出力:</strong>["o","l","l","e","h"] <strong>入力:</strong>s = [" ...

6月27日 01:32 投稿

AtCoder Beginner Contest 378

A - ペアリング 問題文 4つの数が与えられる。各ステップで同じ値の2つの数字を選んで削除する。この操作を最大何回行えるかを求める。 解法 シミュレーションを行う。 コード コードを表示#include <bits/stdc++.h> using namespace std; #define int long long typedef pair<int, int> pii; const int mxn = 1e6 + 5; void solve() { int a, b, c, d; ...

6月27日 01:13 投稿

競技プログラミング問題集: 生成器、MEX、XORの応用

理想的な生成器の判定 正整数kが「理想生成器」であるとは、任意の整数n(n ≥ k)が、長さkの回文配列の要素和として表現可能な場合を指す。回文配列とは、配列aがa1からakまでとakからa1までが同一となる配列である。例として、k=1は理想生成器である(nは[n]で表現可能)が、k=2は非理想(3を表現不可能)。 解法: kが奇数の場合のみ理想生成器となる。偶数の場合、配列 ...

6月26日 21:45 投稿

桁DPの基礎と応用

桁DPとは何か? 桁DP(Digit Dynamic Programming)は、通常ある区間[L, R]内で特定の制約を満たす数字の数を統計するために使用されます。LとRのデータ範囲が大きいため、DP(動的計画法)で統計する必要があることが多いです。 上限Rの処理テクニック 数値の比較ルールから、現在の桁の取りうる値の範囲は、前方の桁の値に依存することがわかります。 もし前方のすべて ...

6月25日 20:48 投稿