灰色コーダーによるABC375振り返り
よし釣れたこのタイトル使えるの二回だけだったw
なぜかというとac-predictorを見てたら入茶してました
今度入茶記事書きます
さて本題書くか
A
愚直に全探索した
N = int(input())
S = input()
r = 0
for i in range(N - 2):
if S[i] == "#" and S[i + 2] == "#" and S[i + 1] == ".":
r += 1
print(r)
解説URL
B
そのまんまユークリッド距離を測った
前の数を変数に保存してやると最初の0,0もカバーできる
ジャッジが遅くて笑った
N = int(input())
x, y = 0, 0
r = 0
for _ in [0] * N:
a, b = list(map(int, input().split()))
r += ((a - x) ** 2 + (b - y) ** 2) ** 0.5
x, y = a, b
r += (x**2 + y**2) ** 0.5
print(r)
解説URL
C
Dより難しい解けなかった
TLE解法まではたどり着いたがそこからがわからずパス
解説見てもよくわかんなかった
解説URL
D
解けた
最初TLEしたがひらめいてACした
疲れたので詳細は書かない
よくよく見ると改善点あり
S = input()
L = {s: [] for s in list("ABCDEFGHIJKLMNOPQRSTUVWXYZ")}
T = {s: 0 for s in list("ABCDEFGHIJKLMNOPQRSTUVWXYZ")}
r = 0
for i in range(len(S)):
if len(L[S[i]]) == 0:
L[S[i]].append(i)
T[S[i]] += i
continue
r += (i * len(L[S[i]])) - T[S[i]] - len(L[S[i]])
L[S[i]].append(i)
T[S[i]] += i
print(r)
解説URL
最後に
入茶できたのとD問題をコンテスト中にACできたのが嬉しかった(レートはまだ不確定)
CよりDのほうが簡単なケース結構あるような気がする
IDよかったら↓↓
id