セイレンチュウ..

AtCoder ABC135

概要

AtCoderの記録です。全部Pythonで頑張ります。
今回はD,E,Fを解いてないです。すみません。

この記事の対象

  • AtCoderについてある程度知っている人
  • Pythonがある程度読める人



本編

AtCoderとは

競技プログラミングコンテストを開催している会社です。 atcoder.jp

ABC135

最近は生活が死にすぎて人生に絶望しています。
なんか生きながら死んでるみたい…。

A Harmony

f:id:alumi-tan:20190728021910p:plain

はい。

A,B = map(int,input().split())
if (A+B) % 2 == 0:
    print((A+B)//2)
else:
    print('IMPOSSIBLE')

B 0 or 1 Swap

f:id:alumi-tan:20190728021942p:plain

1~Nを並び替えた数列なので、昇順の並べ方が1通りしかありません。
よって、i番目の数字がiか否か調べていき、不一致が2つより多ければ'NO'となります。

N = int(input())
p = list(map(int,input().split()))

cnt = 0
for i in range(N):
    if p[i] != i+1:
        cnt += 1

if cnt > 2:
    print('NO')
else:
    print('YES')

C City Savors

f:id:alumi-tan:20190728022237p:plain

少し悩みました。
明確な根拠はよくわからないですが、1番目の勇者から順に、数字が小さい街のモンスターを優先して倒していくのが最善かな?と思い、それを実装したら通りました。

N = int(input())

A = list(map(int,input().split()))
B = list(map(int,input().split()))

cnt = 0
for i in range(N):
    if A[i] >= B[i]:
        cnt += B[i]
    else:
        cnt += A[i]
        if A[i+1] > B[i]-A[i]:
            cnt += B[i]-A[i]
            A[i+1] -= B[i]-A[i]
        else:
            cnt += A[i+1]
            A[i+1] = 0

print(cnt)

D Digits Parade

f:id:alumi-tan:20190728022445p:plain

今回D解けませんでした。悔しい〜。
13で割るということに何か意味があるのだろうと調べてみたところ、106≡100(mod13)だということで、文字列Sを6桁に集約する方針でずっと考えていたのですが、どうやらDPだったようですね。
DPの練習足りてないので、後で解き直しておこうと思います。

まとめ

AGCも前回参加して地味にレートを伸ばしていますが、パフォーマンスレートが1100とかなのでそろそろ伸びが止まってしまいそうです。
水色まではなんとか到達したいものですね。 それではまた次回!

f:id:alumi-tan:20190728022954p:plain