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

コンテスト情報

AtCoder Beginner Contest 448 - AtCoderatcoder.jp favicon

コンテスト時間: 2026-03-12(土) 21:00 ~ 2026-03-12(土) 22:40 (100分)

A 問題

  • Difficulty: 13 / NoviSteps: 7Q / 解答時間: 2:58

問題概要

長さ NN の整数列 AA と整数 XX が与えられる。 i=1,2,,Ni=1,2,\cdots,N の順に以下の処理を行え。

  • もし Ai<XA_i<X なら、 X=AiX=A_i に更新した上で1を出力する。
  • そうでないなら0を出力する。

解答方針

  • 問題タイトルにあるように、これはいわゆるchmin関数の処理である。
  • 私はchminを以下のように実装しているので、chmin(X, A_i)trueならば1を出力し、そうでないなら0を出力すればよい。
CPP
1.template <typename T>
2.inline bool chmin(T &a, T b) { return ((a > b) ? (a = b, true) : (false)); }

ABC 448 A - chminyuulisio.com favicon

B 問題

  • Difficulty: 68 / NoviSteps: 5Q / 解答時間: 6:02

問題概要

MM 種類のコショウがレストランに置いてあり、種類 jj のコショウは Cj[g]C_j \mathrm{\, [g]} ある。

高橋君はこの店で NN 個の料理を注文した。 相性の都合で ii 番目の料理には種類 AiA_i のコショウしかかけることができず、 ii 番目の料理にかけられるコショウの量の上限は Bi[g]B_i \mathrm{\, [g]} である。 なお、種類 jj のコショウを合計 Cj[g]C_j \mathrm{\, [g]} を超えてかけることはできない。

高橋君が料理にかけたコショウの量の合計を最大にしようとするとき、合計何 g\mathrm{g} のコショウを料理にかけることができるか求めよ。

解答方針

  • ii 番目の料理にかけられる最大のコショウの量は、 vi=min(Bi,CAi)v_i = \min(B_i, C_{A_i}) である。
  • したがって、 i=1Nvi\sum_{i=1}^N v_i を求めればよい。
  • このとき、 CAiCAiviC_{A_i} \leftarrow C_{A_i} - v_i と更新しておくことを忘れないようにする。

ABC 448 B - Pepper Addictionyuulisio.com favicon

C 問題

  • Difficulty: 262 / NoviSteps: 2Q / 解答時間: 9:26

問題概要

NN 個のボールが袋に入っており、ボール ii には整数 AiA_i が書かれている。 以下の QQ 個のクエリを処理せよ。

各クエリでは長さ KK の数列 BB が与えられるので以下の一連の操作を行うこと。 ここで、BiB_i は全て 11 以上 NN 以下で、かつ相異なる。

  • まず、ボール B1,B2,,BKB_1, B_2, \cdots, B_K を全て袋から取り出す。
  • そして、現在の袋に入っているボールに書かれた整数の最小値を出力する。
  • その後、取り出した KK 個のボールを全て袋に戻す。

解答方針

  • 袋の中に入っているボールに書かれた整数をmultisetで管理する。
  • クエリでは、まず AB1,AB2,,ABKA_{B_1}, A_{B_2}, \cdots, A_{B_K} を順にeraseし、先頭要素を出力した後、 AB1,AB2,,ABKA_{B_1}, A_{B_2}, \cdots, A_{B_K} を順にinsertする。
  • eraseの引数に ABiA_{B_i} のポインタを渡してあげることで、同じ値が複数あっても1つずつ消すことができる。

ABC 448 C - Except and Minyuulisio.com favicon

D 問題

  • Difficulty: 430 / NoviSteps: 1Q / 解答時間: 18:27 + WA x 1

問題概要

NN 頂点からなる木が与えられ、頂点 ii には整数 AiA_i が書かれている。

k=1,2,,Nk=1,2,\cdots,N について以下の問題に答えよ。

  • 頂点 11 から頂点 kk への単純パスに含まれる頂点について、同じ整数の書かれた異なる 22 頂点の組が存在すればYes、そうでないならNoと答えよ。

解答方針

  • 与えられるのは木なので、頂点 11 を根とすれば任意の頂点 kk までの単純パスは一意に定まり、DFS を用いて全ての頂点に対する根からのパスを計算することができる。
  • ある頂点に到達したとき、ここまでのパス上の頂点にどの数字が何個あるかを記録する連想配列と、2個以上ある整数の種類数を記録する変数を保持する。
  • 行きがけ時は頂点の値を連想配列に追加し、帰りがけ時には頂点の値を連想配列から削除することで、 DFS をしながら答えを求めることができる。

ABC 448 D - Integer-duplicated Pathyuulisio.com favicon

成績

Contest Result - AtCoderatcoder.jp favicon
  • 順位: 2892th / 12343
  • Performance: 1118
  • 1255 → 1242 (-13)

E問題が終了5分後に通ってとても悔しい。