ABC233感想

結果

そこそこのタイムで4完。耐えたという印象です。 E問題は恒例の誤読をしていました。力がないから誤読が起こります。単純に実力不足です。本当に反省しなければなりません。

f:id:iiko_11:20211225235813p:plain

f:id:iiko_11:20211225235743p:plain

A問題

全部場合わけしました。恐ろしくスマートな以下のコードを開始25秒で提出している怪物さんがいらっしゃいました。脳取り替えてください。

print(max(0,(y-x+9)//10))

B問題

0-indexと1-indexを脳内ですぐに整理する能力をそろそろ身につけたいのですが、無能にはまだまだ時間がかかりそうです。

C問題

ボールの個数の総積<=10**5の制約から全探索すればいいことは分かったのですが、実装方法が思いつかず、かなり苦戦しました。

ひねり出した実装方法は、辞書を使って、各袋まで見終わった時点での積の候補とその個数を保持し続けるというものでした。引き出しの少なさを痛感しました。

天才たちのコードを見て、itertoolsのproduct関数がこの問題を解くのにピッタリだったということを知りました。引き出しが増えたとポジティブに捉えたいと思います。

D問題

最初、尺取り法かなと思い、総和がピッタリKという制約のため、あー無理だな。と気づくまでに5分を要しました。累積和をとればなんとかなりそうだなと思って手を動かすと、本当に上手くいきそうだったので、C問題と同様に辞書を使い、頑張って実装しました。ある場所までの累積和-Kがそれより左側の累積和に存在していたら、存在した数だけansに加算します。もっと早解きできるようになりたいです。

E問題

ググると、繰り上がり計算を自分で上手に実装することで大きな桁数の足し算を高速化できるという記事が出てきて、これに間違い無いと思って実装しましたがWAとTLEがとれませんでした。

分母の10**kのkは0から10**100までをとる制約でしたが、弱々アホアホ脳が10**(10**100)なんてあるわけないと思ってしまい、kが0から100までをとるという制約に勝手に読み替えてしまっていました。

誤読してしまった結果、入力Xの桁数が100以上の時は上の方の桁の数字がが1桁目まで加算されることはないので当然WAをくらいました。

コンテスト後、誤読に気づいた後は自力ACできたので、悔いは残りますが、それと同じくらい手応えを感じることができました。来年こそは5完します。

総括

クリスマスのコンテストで、問題文にサンタさんをねじ込んでくれるようなユーモアが楽しくて仕方ありません。作問者さんに感謝です。

5完できていたら年末年始サボりまくっていたと思うので、良い戒めになったと思うことにします。

余談

AtCoderの提出コードのページに「ためになった」ボタン的なのがあったら、綺麗なコードを書くモチベにもなるし、コード作成者に感動と感謝を伝えられるのになーと思ったりしている今日この頃です。感動と感謝を伝えたい方が山ほどいます。あげたらキリがないですが、一番参考にしているのはrin204さんです。届け、この思い。