0.はじめに
Cは、初見簡単に解けそうに感じたけど
意外とてこずりました。
1.A - 484558
最近2進数を扱う問題があったので、その時のソースを参考に
簡単に解けました。
H=str(hex(N))[2:]
文字列にして、3文字目から参照するのは2進数と変わらずでした。
https://atcoder.jp/contests/abc271/submissions/35275984
2.B - Maintain Multiple Sequences
2次元数列を格納して
指定アドレスを抽出するだけの簡単なお仕事。
行は指定数マイナス1にして、列は、1列目が列数なので
そのまま使えるというのがみそでした。
https://atcoder.jp/contests/abc271/submissions/35281480
3.C - Manga
考え方1)
(1)一番うまくいってもN巻まで読めるのが最高
(2)N巻までの数列Lを作って、リストAを頭からチェックし
持っている巻は数列Lの該当アドレスを1に変更。
N以上の巻や、すでにチェックがついている巻があったら
売却候補に1プラス
(3)数列Lを1から見ていき、空いている感があれば売却候補から2を
引いて次の巻へ。
売却候補が足りなければ、数列Lを後ろから見ていき、後ろの本の
アドレスが1の者があったら0にして売却候補に1可算・・・
という仕組みで、例題は通ったが、予想通りTLE
→いろいろ高速化を試すもNG・・・
と、している間に、数列Lさえ作ってしまえば、最初のN巻をもとに
計算できることに気づく。
考え方2)
(1)一番うまくいってもN巻まで読めるのが最高
(2)N巻までの数列Lを作って、リストAを頭からチェックし
持っている巻は数列Lの該当アドレスを1に変更。
N以上の巻や、すでにチェックがついている巻があったら
売却候補に1プラス
(3)数列Lを1から見ていき、フラグが立っていれば、Nから1を引く
フラグが立っていなければ、Nから2を引く
Nが0になったら、該当アドレスが答え。
Nが-1になったら、該当アドレス-1が答え
若干不格好なPGとなりましたが、クリアできました。
https://atcoder.jp/contests/abc271/submissions/35301920
4.D - Flip and Adjust
これはDP!と思いましたが、解法はわからず・・・。
いつかDPマスタしようと思いつつはや半年・・・。