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 &lt ...

6月14日 20:52 投稿

ICPC 2018 横浜大会における主要アルゴリズムの解説

2018年に開催されたICPCアジア地区予選横浜大会の出題問題より、いくつかの典型的な実装手法とアルゴリズムの考え方を解説します。 1. 文字列と数値の混合ソート 文字列中に含まれる数値とアルファベットを個別に識別し、辞書順および数値の大きさに基づいた比較を行う問題です。主なロジックは以下の通りです。 両文字列が完全に一致する場合は対象外とする。 ...

5月16日 06:48 投稿