ICPC 2025 成都站 8 題解説

A – 絵画の枚数 四捨五入を満たす整数列 b を構成する問題。 条件は各 i に対して round(100·b_i/Σb)=a_i。 これを区間に直すと (2a_i-1)·Σb/200 ≤ b_i < (2a_i+1)·Σb/200。 Σb ≤ 201 であることから、s を 1…201 まで全探索し、各 s に対して貪欲に b_i を決めればよい。 bool build(int n, vector<int> a, vector<int> &out) { for (in ...

8月11日 08:10 投稿

特別な数の和 - P8680 [蓝桥杯 2019 省 B]

P8680 [蓝桥杯 2019 省 B] 特別な数の和 問題説明 数値の桁に2、0、1、9が含まれる数字(先頭の0は除く)に興味があるとします。1から40までの範囲において、このような数は1、2、9、10から32、39、40であり、合計28個あります。それらの総和は574です。 n以下の範囲で、このような数の総和を求めてください。 入力形式 一行に整数nが与えられます。 出力形式 条件に合う数 ...

8月10日 22:33 投稿

小白月赛47 解説と実装

A. ボール詰めゲーム 円柱に詰め込めるボールの体積を求める。円柱の体積は πr²h、各ボールの体積は 4/3 πr³。高さ h の中に収まるボール数は ⌊h/(2r)⌋ 個なので、答えは πr²h − ⌊h/(2r)⌋ · 4/3 πr³ である。計算量は O(1)。 #include <bits/stdc++.h> using namespace std; const double PI = 3.14159265358979323846; int main() { ios::sync_with_stdio(fals ...

7月14日 22:37 投稿

C++による基本プログラミング問題の解法

問題 1000: 2つの整数の合計 問題概要 2つの整数 a と b を読み込み、それらの合計を出力してください。 C++ コード例 #include <iostream> // 標準入出力ライブラリをインクルード int main() { int value1, value2; // 2つの整数値を格納する変数を宣言 // 標準入力から2つの整数値を読み込む std::cin >> value1 >> value2; // 読み込んだ2つ ...

7月2日 17:38 投稿

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

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

6月26日 21:45 投稿

競技プログラミングコンテスト問題の解法解説

円周率日チャレンジ Pythonの高精度計算を活用する問題。浮動小数点数の精度問題を回避するため、整数演算で処理する。 n = int(input()) pi_value = 31415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679 results = [] for _ in range(n): numerator, denominator = map(int, input().split()) approx = nume ...

6月15日 16:47 投稿

競技プログラミング問題解説: EPIC Institute of Technology 2025

配列操作と最適化アルゴリズムの応用 A. 順序逆転検出 要素順を変更して、新しい配列を作成し、その配列が元の配列と異なる順序になるようにする問題です。 #include <vector> #include <iostream> using namespace std; void findDisorder(vector<int>& arr) { for (int i = 0; i < arr.size() - 1; ++i) { if (arr[i] > arr[i + 1]) ...

6月13日 22:16 投稿

競技プログラミング問題集 SMU Spring 2023

A. 重複要素の削除 与えられた数列から重複要素を削除し、最初に出現した要素のみを保持するアルゴリズム。 #include <iostream> #include <vector> #include <unordered_map> using namespace std; vector<int> removeDuplicates(const vector<int>& nums) { unordered_map<int, int> countMap; vector<int> result ...

5月29日 14:24 投稿

Codeforces 920 (div3) 解法まとめ

問題 A - Codeforces 入力された四つの座標から、正方形の面積を求める問題です。各辺が軸に平行な正方形かどうかを判定し、辺の長さを計算して面積を求めます。 #include <bits/stdc++.h> using namespace std; typedef long long LL; int main() { int cases; cin >> cases; while(cases--) { int x1, y1, x2, y2, x3, y3, x4, y4; ...

5月25日 02:21 投稿

CSP-Sで出題される可能性のあるテンプレート集(非原创、各所からまとめ)

CSP-Sの点数を上げるためのテンプレート集 数学 高速累乗 int pow_mod(int base, int exp) { int result = 1; while (exp > 0) { if (exp & 1) result = (result * base) % MOD; base = (base * base) % MOD; exp >>= 1; } return result; } ルーカスの定理(逆元の線形計算付き) int inv[N], fact[N], fact_inv[N ...

5月22日 01:39 投稿