ABC190 - Atcoder/Python精進のための解説メモ
2022/12/27
ABC190 - A.Very Very Primitive Game
AtCoder公式 | ABC190 - A.Very Very Primitive Game解答
a, b, c = map(int, input().split())
print('Takahashi' if a + c > b else 'Aoki')
要点解説メモ
- 先手後手のとき高橋くんが勝つ条件条件を考えてから、シンプルな条件に変えられないかを考える
- c=0 のとき a>b, c=1 のとき a>=b なので a+c>b が成り立てば良いよねって感じ
ABC190 - B.Magic 3
AtCoder公式 | ABC190 - B.Magic 3解答
n, s, d = map(int, input().split())
ans = 'No'
for _ in range(n):
x, y = map(int, input().split())
if x < s and y > d:
ans = 'Yes'
print(ans)
要点解説メモ
- シンプルに詠唱時間とダメージの両方が条件を満たすかどうかで比較する
ABC190 - C.Bowls and Dishes
AtCoder公式 | ABC190 - C.Bowls and Dishes解答
import itertools
n, m = map(int, input().split())
aabb = [tuple(map(int, input().split())) for _ in range(m)]
k = int(input())
ccdd = [tuple(map(int, input().split())) for _ in range(k)]
ans = 0
for cd in itertools.product(*ccdd):
balls = set(cd)
cnt = sum(a in balls and b in balls for a, b in aabb)
if ans < cnt:
ans = cnt
print(ans)
別解
n, m = map(int, input().split())
aabb = [tuple(map(int, input().split())) for _ in range(m)]
k = int(input())
ccdd = [tuple(map(int, input().split())) for _ in range(k)]
ans = 0
for i in range(2 ** k):
balls = []
for j in range(k):
if (i >> j) & 1:
balls.append(ccdd[j][0])
else:
balls.append(ccdd[j][1])
cnt = sum(a in balls and b in balls for a, b in aabb)
if ans < cnt:
ans = cnt
print(ans)
要点解説メモ
- cdのどちらかを選ぶ組み合わせは、たかだか2**16=65536通りなので全通り試せば良い
- cを0, dを1としてbitで処理しても良さそう
ABC190 - D.
AtCoder公式 | ABC190 - D.解答
まだ解いていません