Toy と帽子と ADP BE

主にプログラミングに関わる話をゆるくエモくやっていきます

トヨタ自動車プログラミングコンテスト2024#4(AtCoder Beginner Contest 348)

4完

各問題

A - Penalty Kick

for で回すだけですが、[0, n) でなく [1, n] で回すとちょっと実装が楽になります。

for (int i = 1; i <= n) cout << (i % 3 ? "o" : "x");

B - Farthest Point

全探索するだけ。ちなみに平方根はとる必要がありませんし制約の範囲内だと int でおさまります。

C - Colorful Beans

map<int, set<int>> とかで色ごとにまとめて、色ごとに最小値をもとめてそれの最大値を答えればよいです。

set<int> にはせず最小値だけ保存でもいいですが、実装がほんのちょっとだけ面倒...。

D - Medicines on Grid

D は DP の D。なのかな?

ということで、各マスごとにそこに到達したときのエネルギーの最大値を保存し。それを超えているときだけ遷移できるとする BFS をすればよいです。

E - Minimize Sum of Distances

全方位木DPをすればよさそうというのはわかって、類題の ABC222F も見つけたのに、C の扱いをどうしていいのかわからずで解けず...。

まとめ

D までかなり早く解けたので、これは水復帰は固いなと思ったのに、結局ちょっと届かなかったっぽい。木DPできなかったのはいただけない...。