Toy と帽子と ADP BE

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

AtCoder Beginner Contest 297

5完

各問題

A - Double Click

小さいほうから隣接する2つの差がD以下であるかどうかをチェックして、D以下ならそのときの小さいほうがこたえです。一つも該当するものがなければ -1 です。

B - chess960

各条件は別にチェックできます。

'B' の方はそれぞれの出現位置を2で割って、それらが一致しなければ OK です。

'K' と 'R' の方は左からチェックして 'K' が出現したときにそこまでに 'R' が一つ出現していれば OK です。

両方 OK なら答えは Yes、どちらか一つでも満たさなければ No です。

C - PC on the Table

貪欲に左から見て行って TT があれば PC に置き換えれば OK です。なんでこれが C 問題なんだ?

D - Count Subtractions

貪欲にやろうとすると、1018 という制約では時間がかかりすぎてしまいます。

A < B として、A * 2 <= B である間は常に B が A ずつ減っていくので、まとめて操作することが可能です。まとめられる操作回数は (B - A * 2) / A + 1 となります。

E - Kth Takoyaki Set

priority_queue で既に出現した金額を保持して、小さいものからさらに1つ買い加えたN個の金額を priority_queue に追加していく、として出現した額がK個に達するまで続ければよいです。

まとめ

Fが崖でEまですんなり通せたので、久しぶりの青パフォで水色復帰しました。