2022 ICPC アジア西安地区大会 問題解説と実装アプローチ
C. Clone Ranran
本問題は、自身のクローンを作成する時間と、問題を作成する時間のバランスを取って最小の総時間を求めるものです。
クローンを作成する回数を全探索します。クローンを作成するたびに人数は2倍になるため、対数オーダーの探索で済みます。各ステップにおいて、必要な問題数を現在の人数で割ったもの(切り上げ)を作成時間に乗算し、クローン作成時間と合 ...
8月18日 14:40 投稿
ICPC 2025 Yokohama R「Seagull Population」問題解説
(M) の処理については公式解説を参照されたい。
まず,海鸥の全总数的明显な下界は (b_i) の最大值であり,(D_{\mathrm{max}} = \max(b_1, \ldots, b_n)) である。これは,いずれかの日に观察到的海鸥数が海鸥の総数をを超えることはできないためである。同様に,增加分の合計も
[S_{\mathrm{inc}} = \sum_{i = 1, \ldots, n} \max(b_i - b_{i - 1}, 0) \quad (\text{where ...
8月17日 01:54 投稿
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 投稿
ICPC南京2025 区域赛 CFGIJ 解法まとめ
C. キャンディの均等配分
問題の本質は「奇数個のキャンディは必ず偶数を生むため分割不可」という観察にある。したがって入力が偶数であれば単純に半分に分ければよく、奇数なら即座に不可と判定する。
void judge() {
long long N;
std::cin >> N;
if (N & 1) {
std::cout
7月18日 21:14 投稿
2024年ICPCヨーロッパ大会最終問題解説
A. Hitoshizuku
貪欲法で解きます。
右端点でソートした後、マッチングされていない点に対して、各右端点以下の点を管理し、その端点が管理されている集合の中で右端点が最も小さい2点とマッチングします。
最適性の証明は調整法によるそうです。
コード例
#include <iostream>
#include <vector>
#include <algorithm>
#include <set>
using name ...
6月21日 19:26 投稿
SMU春季2023竞赛第5轮(2023年江西省级程序设计竞赛官方赛题)
問題リンク
問題A. 木を掘って火を起こす
S * V >= n さえ満たせばよい
#include<bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
const int N = 2010,mod = 1e9 + 7;
int n,s,v;
void solve() {
cin >> n >> s >> v;
if(s * v >= n)
cout << 1 << endl;
else cout < ...
6月14日 20:52 投稿
ICPC 2018 横浜大会における主要アルゴリズムの解説
2018年に開催されたICPCアジア地区予選横浜大会の出題問題より、いくつかの典型的な実装手法とアルゴリズムの考え方を解説します。
1. 文字列と数値の混合ソート
文字列中に含まれる数値とアルファベットを個別に識別し、辞書順および数値の大きさに基づいた比較を行う問題です。主なロジックは以下の通りです。
両文字列が完全に一致する場合は対象外とする。
...
5月16日 06:48 投稿