AtCoder Beginner Contest 153の感想

ABC153に参加した。

AtCoder Beginner Contest 153 - AtCoder
AtCoder is a programming contest site for anyone from beginners to experts. We hold weekly programming contests online.

A – Serval vs Monster

HをAで割った商を切り上げる。

import math

h, a = map(int, input().split())

print(math.ceil(h / a))

B – Common Raccoon vs Monster

同じ必殺技を2回以上使うことは出来ない。

必殺技で与えられるダメージの合計値が、敵の体力を上回っていれば勝ち。

h, n = map(int, input().split())
a = [int(x) for x in input().split()]

if h <= sum(a):
    print('Yes')
else:
    print('No')

C – Fennec vs Monster

敵の体力を0にする必殺技をK回使うことが出来る。

通常攻撃の回数が答えであり、必殺技を使った回数は含まれないので注意。

N≦Kなら全てのモンスターを必殺技で倒すことが出来るので、通常攻撃回数は0

K!=0なら、体力の多い敵から順番に必殺技を使い、残った敵を通常攻撃で倒す。

K=0なら必殺技を1度も使えないため、全ての敵を通常攻撃で倒す。

n, k = map(int, input().split())
h = [int(x) for x in input().split()]

if n <= k:
    print(0)
elif k != 0:
    h.sort()
    ans = sum(h[:-k])
    print(ans)
else:
    print(sum(h))

D – Caracal vs Monster

攻撃すると敵の体力を半分にし、半分になった体力を持つ敵が2体現れる。

半分に分裂していくイメージ。

2で何回割れるかを求め、2^(割った回数)の総和が答え。

import math

h = int(input())
memo = [0]
cnt = 0

while h > 1:
    cnt += 1
    memo.append(cnt)
    h = math.floor(h / 2)

ans = 0
for i in range(len(memo)):
    ans += 2 ** memo[i]

print(ans)

E – Crested Ibis vs Monster

ダメージ対魔力が最も高いもの、いわゆるコスパが良い魔法、効率のいい魔法を連発していくと考えたが、WAだった。

解法が思いつかず、Dまでの4完となった。

もう少しで茶色になれそう。

コメント

タイトルとURLをコピーしました