過去問精選 10 問やってみる2

前回の続きです


第 6 問: ABC 088 B - Card Game for Two (200 点)
https://atcoder.jp/contests/abc088/tasks/abc088_b
降順にソートして、偶数奇数で取り合っていけばOK

N = int(input())
a = list(map(int, input().split()))
sum_a = 0
sum_b = 0

a.sort(reverse=True)

for i in range(len(a)):
  if i % 2 == 0:
    sum_a += a[i]
  else:
    sum_b += a[i]
print(sum_a - sum_b)


第 7 問: ABC 085 B - Kagami Mochi (200 点)
https://atcoder.jp/contests/abc085/tasks/abc085_b
setで重複をなくしただけ、中身どうなってるんでしょ??

N = int(input())
a = set()
for i in range(N):
  a.add(int(input()))
print(len(a))


第 8 問: ABC 085 C - Otoshidama (300 点)
https://atcoder.jp/contests/abc085/tasks/abc085_c
最初、i, j, kを持ちいた3重ループにしていましたが見事にTLEになりました
よくよく考えたら最深部のループはいらなかったです。。。

N, Y = map(int, input().split())
nn = Y // 10000 if (Y // 10000) < N else N
mm = Y // 5000  if (Y // 5000)  < N else N
ll = Y // 1000  if (Y // 1000)  < N else N

#print(nn, mm, ll)
ans = "-1 -1 -1"
for i in range(nn+1):
  for j in range(mm+1):
    if i + j > N:
      break
    if (i * 10000 + j * 5000 + (N-i-j) * 1000) == Y:
          ans = str(i)+" "+str(j)+" "+str(N-i-j)
          break
print(ans)


第 9 問: ABC 049 C - Daydream (300 点)
https://atcoder.jp/contests/abc049/tasks/arc065_a
正直思いつかず、解説を見てしまいました
後ろから解くといいとのことで、やってみたらすんなりいけました
DPなどもしっかりやれるようになっていきたい・・・

S = input()
k = ["dream", "dreamer" ,"erase", "eraser"]
ans = "NO"

while len(S) > 0:
  a = len(S)
  for i in k:
    if S[-1*len(i):] == i:
      S = S[0:-1*len(i)]
      break
  if a == len(S):
    break
  elif len(S) == 0:
    ans="YES"
print(ans)


第 10 問: ABC 086 C - Traveling (300 点)
距離の絶対値を確認したら、偶数奇数で場合分けすることで確認可能

N = int(input())
pos = [0, 0, 0]
ans = 'Yes'
for i in range(N):
  t, x, y = map(int, input().split())
  if t-pos[0] >= abs(x-pos[1]) + abs(y-pos[2]):
    if ((t-pos[0]) % 2 == 0) and ((abs(x-pos[1]) + abs(y-pos[2])) % 2 == 0):
      pos = [t, x, y]
    elif ((t-pos[0]) % 2 == 1) and ((abs(x-pos[1]) + abs(y-pos[2])) % 2 == 1):
      pos = [t, x, y]
    else:
      ans = 'No'
      break
  else:
    ans = 'No'
    break
print(ans)


とりあえず、全部独力というわけではなかったですが完答できました
次は類似問題にチャレンジしてみます!