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 投稿