りにゅうしょく

競技プログラミング 日常

第五回 PAST(アルゴリズム実技検定)感想

バチャ途中で2時間抜けるナメ腐ったマネをしたらFまでしか解けませんでした。
新年早々幸先の悪い感じです。

1回目はHまで、2回目はGまで過去問を埋めてて、3回目はリアタイ受験していて中級(64点)でした。
今回の気持ち
A~C:かんたん
D:むずかしい
E:やるだけなんだけど大変
F:Eより簡単
~~
G:解けなかった
H:Gよりかんたん
I:Gよりかんたん

B - 上書き

後ろから見て、まだ出てきてないアルファベットを末尾に足していって最後に反転する。

D - リーディングゼロ

どういう実装をしたら綺麗にできるのかわからん……(;;)
まず2次元配列(1~10^5)を持って、0を抜いた桁数ごとに分けてpairで格納。
最後に桁数ごとにソートすると、2つめのほうで-1をかけてるから同じ数でも前についてる0の個数が多いほど前に来るので、もう一度0をつけなおして出力する。

E - ハンコ

これも実装が下手だからすごく面倒くさくなってしまった……(;;)
Sは入力に加えて上下左右に+10ずつ余白を取る(余白は#で埋める)のと、外に関数(?)を書くのかなり苦手だけどチェック部分はそうするようにした(それでもめっちゃ汚い)。

F - 一触即発

制約が小さいので薬の組み合わせについてbit全探索をする。「新たに追加すると爆発するような薬品 x」についてはsetで管理する。

G - ヘビ

これも制約が小さいので何をやっても計算量は大丈夫そうで、どこを通ったかチェックしながらのdfsを書いてみるけど通らず……。
後で教えてもらうと、return;を書いているところが間違っていて(return;で再帰関数が終了しないので)、exit(0);にしたら無事ACできた。

H - コンベア

各点からゴールに向かってBFSをすると間に合わないので、ゴールからどこまで行けるかのBFSをする(ので、矢印のことは反対向きにとらえる)。

I - 避難計画

避難所について、標高が高いものから順にBFS。辺は逆に標高が低いほうから高いほうに張る。既に見たものでも、distの距離が今より遠い場合は更新する。計算量はわからない……。

アルゴリズム」の検定だからABCより実装が多くなるのかなーと思いました。算数できないのでこっちのほうが好き説はあります(?)
J以降もぼちもち見ていきたいです。