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