AtCoder ABC143
AtCoder ABC143解いた分だけ書きます。
今回は試験前日だったので、本番は不参加。
次回もCTF大会中なので、AtCoder復帰は来月からになりそう。
A. Curtain
問題によれば、窓枠とカーテンの横幅が与えられるので、
カーテンで埋まらなかった分の長さを求める。
当然、カーテンの方が大きいこともあるので、その場合は0。
つまり、0とa-2*b(カーテンが窓より小さい時)のうち、大きい方が答え。
#coding:utf-8 a, b = map(int, input().split()) print(max(0, a - 2*b))
B. TAKOYAKI FESTIVAL 2019
問題によれば、たこ焼き2個選ぶ全組み合わせについて、
おいしさの合計を出す必要がある。単純に2重ループ(O(N2))で解ける。
この時、内側のループは外側のループより+1からスタートすれば、重複回避可能。
うまくやると計算量O(N)でいけるらしい。うーん...
#coding:utf-8 n = int(input()) d = list(map(int, input().split())) ans = 0 for i in range(0, n): for j in range(i+1, n): ans += d[i] * d[j] print(ans)
C. Slimes
問題によれば、隣り合った同じ色のスライムが合体する。
文字列の重複削除も考えたけど、色の境目を見てカウントした方が良さそう。
ただし、最初の1個が抜けるので、カウンタは1から始める。
#coding:utf-8 n = int(input()) s = list(input()) # 最初の1種類はカウントしておく count = 1 # 色の境目が見えたら別個体になる for i in range(0, n-1): if s[i] != s[i+1]: count += 1 print(count)
D. Triangles
後日まとめます。解説や蟻本見つつ