1
1

More than 3 years have passed since last update.

javaでAtCoder Beginner Contest 153を解く

Posted at

AtCoder Beginner Contest 153お疲れ様でした!
公式ページ

今回の自分の書いたコードはこちら
結果はA-DまでAC、FがTLEでした。

以下簡単に解説します。

問題A

HPがHのモンスターを攻撃力Aで攻撃して、何回で倒せるかを求める問題。
H/Aがちょうど割り切れるときの処理に注意すれば大丈夫なはずです。

問題B

数字(必殺技の攻撃力)を足し合わせて、相手のHPに届くかどうかを求める問題。
シンプルな足し算でいけるはずです。

問題C

モンスターがN体いて、必殺技がK回使えます。
この必殺技でモンスターを瞬殺できるので、この必殺技を誰に使うかが求められれば、あとは残った敵の体力を足し合わせれば大丈夫です。

当然、体力が高い順にK体必殺技を使いたいので、それをコードで頑張って表現しましょう。

問題D

1度攻撃を行うと、モンスターが体力H/2になって分裂し、体力が1の場合には倒せる。
これは敵の数敵の体力をもっておくと比較的シンプルにできました。

1回の操作で
敵の数分だけ、攻撃を行った回数を加算し、
敵の体力を半分にし、
敵の数を2倍にする

この操作を体力が0になるまで繰り返せばOKです。

問題E

なんだかアルゴリズムの定番問題っぽいなぁと思いつつ分からず。

問題F

2ケースTLEでした・・・
自分の考え方は
①座標を小さい順にソートする
②敵の体力を何回の攻撃で倒せるかに換算する
を下処理として行い、

①座標を小さい順にひとつ取得する
②その点の敵があと何回で倒せるかを取得
③そこから、爆弾の範囲ぶんだけの点を取得
④その範囲の敵について、②で取得したぶん攻撃する。

実装きちんとできればACなると思うのですが、、基本的な考え方は間違っていない気がします。


レーティングは956→944。

D問題までは17分とサクサクできて、成長も感じれたのですが
E問題以降解けるようにならないとここからはレートなかなか伸びなそうです。。

今回のE問題もF問題もきちんと復習します!!:cry:

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1