AtCoder Beginner Contest 448 コンテストまとめ
コンテスト情報

コンテスト時間: 2026-03-12(土) 21:00 ~ 2026-03-12(土) 22:40 (100分)
A 問題
- Difficulty: 13 / NoviSteps: 7Q / 解答時間: 2:58
問題概要
長さ の整数列 と整数 が与えられる。 の順に以下の処理を行え。
- もし なら、 に更新した上で
1を出力する。 - そうでないなら
0を出力する。
解答方針
- 問題タイトルにあるように、これはいわゆる
chmin関数の処理である。 - 私は
chminを以下のように実装しているので、chmin(X, A_i)がtrueならば1を出力し、そうでないなら0を出力すればよい。
1.template <typename T>2.inline bool chmin(T &a, T b) { return ((a > b) ? (a = b, true) : (false)); }
B 問題
- Difficulty: 68 / NoviSteps: 5Q / 解答時間: 6:02
問題概要
種類のコショウがレストランに置いてあり、種類 のコショウは ある。
高橋君はこの店で 個の料理を注文した。 相性の都合で 番目の料理には種類 のコショウしかかけることができず、 番目の料理にかけられるコショウの量の上限は である。 なお、種類 のコショウを合計 を超えてかけることはできない。
高橋君が料理にかけたコショウの量の合計を最大にしようとするとき、合計何 のコショウを料理にかけることができるか求めよ。
解答方針
- 番目の料理にかけられる最大のコショウの量は、 である。
- したがって、 を求めればよい。
- このとき、 と更新しておくことを忘れないようにする。

C 問題
- Difficulty: 262 / NoviSteps: 2Q / 解答時間: 9:26
問題概要
個のボールが袋に入っており、ボール には整数 が書かれている。 以下の 個のクエリを処理せよ。
各クエリでは長さ の数列 が与えられるので以下の一連の操作を行うこと。 ここで、 は全て 以上 以下で、かつ相異なる。
- まず、ボール を全て袋から取り出す。
- そして、現在の袋に入っているボールに書かれた整数の最小値を出力する。
- その後、取り出した 個のボールを全て袋に戻す。
解答方針
- 袋の中に入っているボールに書かれた整数を
multisetで管理する。 - クエリでは、まず を順に
eraseし、先頭要素を出力した後、 を順にinsertする。 eraseの引数に のポインタを渡してあげることで、同じ値が複数あっても1つずつ消すことができる。

D 問題
- Difficulty: 430 / NoviSteps: 1Q / 解答時間: 18:27 + WA x 1
問題概要
頂点からなる木が与えられ、頂点 には整数 が書かれている。
について以下の問題に答えよ。
- 頂点 から頂点 への単純パスに含まれる頂点について、同じ整数の書かれた異なる 頂点の組が存在すれば
Yes、そうでないならNoと答えよ。
解答方針
- 与えられるのは木なので、頂点 を根とすれば任意の頂点 までの単純パスは一意に定まり、DFS を用いて全ての頂点に対する根からのパスを計算することができる。
- ある頂点に到達したとき、ここまでのパス上の頂点にどの数字が何個あるかを記録する連想配列と、2個以上ある整数の種類数を記録する変数を保持する。
- 行きがけ時は頂点の値を連想配列に追加し、帰りがけ時には頂点の値を連想配列から削除することで、 DFS をしながら答えを求めることができる。

成績

- 順位: 2892th / 12343
- Performance: 1118
- 1255 → 1242 (-13)
E問題が終了5分後に通ってとても悔しい。





