AtCoder ABC133
概要
AtCoderの記録です。全部Pythonで頑張ります。
E,Fは解いてないです。
この記事の対象
本編
AtCoderとは
競技プログラミングコンテストを開催している会社です。 atcoder.jp
ABC133
現代制御の勉強中に線形代数のわかってなさが露見して焦ってますが、参加します。
A T or T
う〜〜〜ティ〜〜!!ティー!ティティー!ティッティッティティー!TT兄弟だ!!
N,A,B = map(int,input().split()) if N*A > B: print(B) else: print(N*A)
B Good Distance
見通しは良いが少し手間に感じた。
import math N,D = map(int,input().split()) l = [] for i in range(N): data = list(map(int,input().split())) l.append(data) def dist(a,b): cnt = 0 for i in range(len(a)): cnt += (a[i]-b[i])**2 return math.sqrt(cnt) ans = 0 for i in range(N): for j in range(i+1,N): if dist(l[i],l[j])%1 == 0: ans += 1 print(ans)
C Remainder Minimization 2019
いや〜。これに今回は少し手こずってしまった。大失敗。
2019=3×667だな、とか考える必要なかった。
LとRの差が2019以上ある場合は必ず2019の倍数を取れるので余りは0で、それ以外の時は全探索で行ける。
L,R = map(int,input().split()) if R-L >= 2019: ans = 0 else: ans = 4000 for i in range(L,R+1): for j in range(i+1,R+1): p = ((i%2019) * (j%2019))%2019 if p < ans: ans = p print(ans)
D Rain Flows into Dams
今回も数学の問題ですね。
山iに降る雨の量を2x_iとして、x_1~x_nまでのn元連立方程式をうまく解け、という問題です。
係数行列を行階段形に直す操作を考えていくと気づきますが、x_1に注目すると、最終的に2x_1=A_1-A_2+A_3-A_4+…+A_N(Nが奇数のため最後は+)という式が導けます。
x_1が求められると、芋づる式にx_2,x_3,…と求めていけます。
N = int(input()) A = list(map(int,input().split())) x = [0 for i in range(N)] cnt = 0 for i in range(N): if i % 2 == 0: cnt += A[i] else: cnt -= A[i] x[0] = cnt for i in range(1,N-1): x[i] = (A[i-1]-x[i-1]/2)*2 L = [str(int(i)) for i in x] print(' '.join(L))
まとめ
今回は緑コーダーデビューするぞ!と思っていましたが、ギリギリできませんでした。悲しい。
Dは数学の問題で一発で通せたのですが、Cで謎に手間取って3WAを出したのが敗因ですね。次回こそデビューします。あと院試の勉強も頑張ります。