ABC105

好きなセットだっただけに、unratedは残念。81位で、グダった感覚な割にはけっこういい順位。

A - AtCoder Crackers

なんかBっぽさある。確かに簡単だが、やはりwriterの名前の通りの雰囲気はある。経験的に差の最大は1枚なのでそれを使う、というムーブがなんとも微妙な。日常生活の経験は正直競プロで使う厳密さがないこともあり、ちょっとためらう。この辺は普段の生活が出るところかもしれない。まあ1枚なので短いコードを書いて提出。1分切ったの久しぶりな気がする。実装量の少ないA問題が久しぶり。

B - Cakes and Donuts

Bなので全探索。やや難しい全探索だ。7の倍数を引いて4で割り切れるかを見る(7を掛けるのが遅い以上に4で割るのが速いため(全探索に逃げてるのにそこ気にするんだ))。あと、負の枚数は買えないことに注意して書く。

C - Base -2 Number

これ時間かかったの本当にもう。たぶん瞬殺できそうだと思ったし、まあ確かに難しかったかもしれないが、これを10分で解けないのは俺の強みって何という話になる。これ知らないのって俺としてどうなの。そういう感情の中、少しずつ解き進めていった。
少し考えて解けないので、とりあえず2進法の場合を書いた。似たコードになる可能性が高いと思っていた。一意性を考えたが、2進法の2の位を-2進法の-2と4に分解できるのでまあそれっぽい。ただ、これをコードに落とすのはけっこう厄介。上から考えるか。2進法の場合でも、256未満で128より大きければ128を引いて、みたいな操作を繰り返せばいける。しかし考えるとマイナスの場合は最上位をいきなりは決めづらそうだ。かなり悩んだが、単純に下から決めていく最初の方法に戻ってきた。そもそも、奇数なら必ず最下位が1だし、それを処理したあとで4で割って2余るなら-2が必要なのは明らかだ。んで一意に決まるんだからそうやって決めていけばそれでいい。念のためにllを使い書いていたが、どうだろ絶対値が10^9以下ならintで1bit余ってるから必要ないかな。
追記:-2進法を符号反転するにはどんな処理をすればいいんだろうとか考えてたな。どうなんじゃろ。

D - Candy Distribution

C問題と違って安心感がある。数え上げはDEGwerか!?と思ったがそもそもよく読むと答えは高々(10^9)^2くらいだ。つまりmod Mで0になる区間が欲しい。しゃくとり、いや色々ありそう。なんか雰囲気はBITだと思ってたんだけど、まあ単純に累積和が(mod Mで)同じとこ同士ですね。これはintの範囲で累積和もその値の計算もいける。軟弱者なのでmapを使った。本来はソートだけで行ける(そういえばmap使うならソートは不要だった、ソートによってかえって速くなってたりするんだろうか?(追記:普通に遅くなってた))。簡単な問題をゆっくり書いた(unratedと聞いて少し醒めていた)ので余裕かと思いきやWA。ここでか。llの使い方を疑ったが、そうじゃなくて累積和のとこで<=にし忘れてた。これは酷い。累積和はもう慣れたと思ってたら。最後の入力を受け取ってなかったのだ。