Hewlaの競プロ記

競プロ記です。

When I hit my pocket... - AtCoder 「みんなのプロコン 2019」 C

400点。慎重にやります。
問題リンク

解説

ポッケを永遠に叩いていても1枚ずつしか増えませんが、A枚のビスケットを1円にして1円でB枚のビスケットを買ってくれば2回の操作でB-A枚増やすことができます。どっちがお得かな、というふうに考えたらいいと思います。あとは場合分け。

まず、ビスケットを一枚も換金しない/できない場合について。

  • A-1 >= K (ビスケットを換金できない)
  • B-A <= 2 (ビスケットを換金するよりポッケを叩いたほうがいい)

の場合に答えが

  • K+1

になります。

A枚のビスケットをB枚に変えるためには2回の操作が必要です。K回目の操作でうっかりビスケットをお金に変えてしまうと損なので、所持枚数がA枚に到達した時点での残り操作回数 K - (A - 1) の偶奇による場合分けが必要です。

  • 偶数の時 A + (K-A+1) / 2 * (B-A)
  • 奇数の時 A + (K-A) / 2 * (B-A) + 1

補足説明をすると、
偶数の時 A枚集めた後、クッキーを(K-A+1)/2回 (B-A)枚ずつ増やす
奇数の時 A枚集めた後、クッキーを(K-A)/2回 (B-A)枚ずつ増やし、一回ポッケを叩く
という立式です。

Cookie Clickerって意外と時間溶けるんですよね