2024年夏休み交流戦・練習編1

2024年夏休み交流戦・練習編1 A - 🐓 AtCoder - abc079_d 問題文 各頂点のコストが与えられ、それを1に変換するのに必要な最小コストを求める。 解法 すべての数を1にするには、直接1に変換するか、別の数に変換してからさらに変換する方法がある。 これは$floyd$アルゴリズムによる最短経路探索と似ているため、$floyd$を適用できる。 コード #include<bits/stdc++.h&g ...

8月5日 02:59 投稿

HUAWEI Programming Contest 2024(AtCoder Beginner Contest 342)解説

A - Yay! 長さが3以上の文字列中に2種類の文字が含まれており、そのうち1つはちょうど1回だけ出現する。その位置を1-indexedで出力せよ。 最初の文字が一意であれば、残りにその文字は存在しない。そうでなければ、最初の文字とは異なる最初の文字を探せばよい。 #include <iostream> #include <string> using namespace std; int main() { string s; ...

7月18日 00:29 投稿

AtCoderコンテスト445の解法解説

D - チョコレートの再構築 この問題は比較的単純な実装問題です。チョコレートの配置を再構築するアルゴリズムを示します。 struct Chocolate { int height; int width; int id; }; bool compareWidth(const Chocolate &a, const Chocolate &b) { return a.width > b.width; } bool compareHeight(const Chocolate &a, const Chocolate &b) { ret ...

7月17日 20:13 投稿

ABC356コンテスト問題解説

問題A 問題の指示に従ってシミュレーションを行います。 #include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int size, left, right; cin >> size >> left >> right; vector<int> sequence(size); for (int i = 0; i < size; ++i) { sequence[i] = i + 1; } ...

7月17日 03:05 投稿

ABC351コンテスト問題解説

問題A: ゲームの点数計算 木青チームと高橋チームの点数をそれぞれ計算し、木青チームの総得点が高橋チームより1点多くなるようにします。 コード例 #include <iostream> #include <vector> int main() { int score_gq = 0, score_mq = 0; int input; // 木青チームの9つの点数を入力 for (int i = 0; i < 9; ++i) { std::cin >> i ...

7月14日 02:44 投稿

ビット列列挙の応用問題集

ビット列列挙は、組み合わせ問題を効率的に解決するための強力な手法です。具体的な応用例を通じてその実装方法を解説します。 問題1: ビットマスクとPopcountの総和 与えられた非負整数NとMについて、0からNまでの全ての整数iにおける (i & M) のビットカウント(popcount)の総和を求める。解法では加算処理を乗算に変換して効率化する。 例: N=22 (2進数:10110) ...

7月11日 21:10 投稿

AtCoder Beginner Contest 338 解説

A - Capitalized? 英字からなる文字列 $S$ が与えられる。先頭が大文字で、残りがすべて小文字であるかを判定する。 単純に先頭文字が 'A'~'Z' の範囲にあり、他の文字がすべて 'a'~'z' の範囲にあるかをチェックすればよい。 #include <bits/stdc++.h> using namespace std; int main() { string s; cin >> s; bool ok = isupper(s[0]); for (in ...

7月8日 19:49 投稿

ABC352コンテスト問題解説

問題A: 停車可能区間の判定 ある区間内に指定された位置が含まれるかを判定する問題です。xとyの大小関係によって、区間の方向が変わる点に注意が必要です。 コード例 #include <iostream> #include <algorithm> int main() { int n, x, y, z; std::cin >> n >> x >> y >> z; bool result = false; if (x ...

7月7日 21:07 投稿

AtCoder Beginner Contest 357 における A から D 問題の解法解説

問題A: Sanitizer N人の人が順番に手を消毒します。各人が必要とする消毒液の量 $H_i$ が与えられ、合計 $M$ 単位の消毒液があるとき、何人目までが完全に手を消毒できるかを求める問題です。 実装としては、配列に格納された各 $H_i$ を順に累積し、その合計が $M$ を超えた時点のインデックスを確認します。累積和が $M$ を超えない場合は、全員が消毒可能です。 #inclu ...

7月1日 16:24 投稿

AtCoder Beginner Contest 333 スolved 解説

概要 AtCoder Beginner Contest 333 の Implement 問題を解説します。難易度は A-D が初心者〜中級者向け、E はGreedy + スタック操作の基礎知识点が必要です。 A - Three Threes 入力された整数 \(n\) を \(n\) 回連続して出力する問題です。 制約が \(1 \le n \le 9\) と非常に小さいため、ループで単に出力すればOKです。 #include <iostream> using namespac ...

6月29日 20:56 投稿