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完となった。
もう少しで茶色になれそう。
コメント