Toy と帽子と ADP BE

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

AtCoder Beginner Contest 223

4完1WA2RE。なんだこれ・・・。

各問題

A - Exact Price

Xが100で割り切れればYesで、割り切れなければNoです。ただし、Xが0のときはNoです。サンプルに入っていて優しいですね。

B - String Shifting

たかだか1000通りしかないので、全部の文字列を作ってvectorに入れてソートして、先頭と末尾を取り出せばよいです。

C - Doukasen

各導火線につき何秒で燃え尽きるかを計算して、合計でかかる秒数÷2をして、その時点でどの導火線のどこが燃えているかを計算すればよいです。

ここで、苦手な算数問題を無難にクリアしていい感じだと思ったのですが・・・。

D - Restricted Permutation

結論からいうと、priority_queueを使って辞書順に並ぶようにBFSでトポロジカルソートをすれば、ソート結果が答えです。BFSのトポロジカルソートなら、ソート結果の列がNより小さい時閉路があるとみなせるので、その場合-1を出力でよいです。

閉路検出をDFSでやろうとしたり、構築を全然見当違いなロジックで組もうとしてたりとか、ぐだぐだで1時間近くこの問題に費やしてしまいました・・・。

E - Placing Rectangles

図形わからない・・・。後ろのほうがとっつきやすそうだったのでこちらはスルーしました。

F - Parenthesis Checking

'('を1、')'を-1として、区間の和が0かつ区間内の和のいずれも負にならない、という条件を満たせばいいということはわかりました。前者はsegtreeで管理できることはすぐわかったのですが、後者の条件をどう判定してよいかわからず・・・。(int じゃなくて pairで持って、minも管理しておけばよかったらしいです。)

考察はできているのにもったいないことをしました。

まとめ

Dでぐだったのがすべて・・・。一応レートは2だけ増えましたが緑パフォなので実質負けですね。

f:id:mdstoy:20211017225523p:plain