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