結果
順位 267th / 5238 パフォーマンス 1919 レーティング 1881 → 1885(+4)
前日のAGCでレート-4だったので二日間でプラマイゼロ。このあたりが適正か?
A - Red or Not
これAtCoderの色システムと対応しているの? 上のほうがどうなっているのかよく知らないし3200以上がredなのかとやや混乱しかけた。
B - Resistors in Parallel
double
を信じて愚直に計算するだけ。解説PDFを見ていて気づいたんだけど、桁数を指定して出力するときstd::setprecision
だけで良いのか。std::fixed
も指定しなきゃいけないのかと思っていたが、0が続く場合にそれが出力されるかどうかという違いがあるだけっぽい。機械学習とかで損失の桁を揃えて綺麗に表示したいときは当然これ使うわけだけど競プロではいらなかったか。
C - Alchemist
無駄にstd::priority_queue
を使ってしまったが混ぜることで大きくなるわけがないんだからソートして小さい方から混ぜていくだけで良かったか。
D - Ki
妙に簡単で拍子抜けした。最近はdfsをstd::stack
を使ってそのまま書くことがマイブーム。
E - Strings of Impurity
最初、順番を考慮せずにで各文字が出現した回数を上回るような位置を二分探索すればいけるじゃんと思って書き始めたが途中でミスに気づく。時間をロスして焦り始めたが、冷静になればにおける各文字の位置を記録して、次に到達するべき文字で二分探索すれば良いとわかって落ち着いた。細かいところだけど出現位置をstd::vector
で取って毎回二分探索するんじゃなくてstd::set
で保持して降りていくだけの方がなんか好みの実装だったな。書いていたときはそうできなかったが……。
F - Coincidence
がの最左ビット以外を適当に降ろしたものだというのは実験してなんとなくわかったけど、とかとかそういう制約を考えると数えられない。あるを固定したときの適切なの数はで求められる(たぶん)んだけど、そもそもをからまでループするということができないので……というところで思考が詰まって終わった。
えーこれ桁DPで数えられるのかという感じ。2つの数字を上手くいじりながら数えることができるんだなぁ。実装例をほぼ写経する感じでAC。こういうのが数えられると知っていれば今後はなんとかなる、かなぁ。