直近2回のコンテストでレートを溶かしてしまいました。
レートは過剰に意識はしていないつもりですが、上がると嬉しいですし、下がると悔しいものですね。
今回のABC224で少しでも戻せると良いなと思って参加しました。
使用言語はPython3です。レートは600程度です。数学的に厳密な話などは出来ませんが、自分が理解した内容を記載しています。
A – Tires
標準入出力と条件分岐、文字列の扱いが出来るかが問われる問題。
問題文の通り実装するのであれば、後ろ2文字が ” er ” かどうかを判定すれば良いですね。
実際には、最後の1文字が ‘ r ‘ かどうかを判定すれば良いので、私はこちらのコードで提出しました。
# AtCoder Beginner Contest 224
# A - Tires
S=input()
if S[-1]=='r':
print("er")
else:
print("ist")
B – Mongeness
繰り返し処理と条件分岐が書けるかが問われる問題。
問題文に書いてある通りに実行すればOKですが、4重の for 文になるので、ちょっとドキドキします。
今回は制約が小さいため、TLEにならないです。
途中で条件に合わない部分が出てきたら “No” を出力して、プログラムを停止させて、for文全てが実行された場合は、 “Yes” を出力すればOKですね。
# AtCoder Beginner Contest 224
# B - Mongeness
H,W=map(int,input().split())
F=[]
for i in range (H):
F.append(list(map(int,input().split())))
# print(F)
for i1 in range (H):
for i2 in range (H):
for j1 in range (W):
for j2 in range (W):
if i1 >=i2 or j1 >=j2:
continue
if F[i1][j1]+F[i2][j2] <= F[i2][j1]+F[i1][j2]:
continue
else:
print("No")
exit()
print("Yes")
C – Triangle?
xy平面の2点の傾きを計算できるかを問われる問題。
ABC181のC – Collinearity の類題ですね。
ABC181-Cは解けなかったのですが、今回は比較的スムーズに解けたので、少しずつ成長していると思いたいです。
三角形の面積が正の面積を持つためには、3点の組み合わせで、2点間の傾きが等しくない場合の数を数えればOKです。
3点をA,B,Cとした場合、AとB、AとCの傾きが等しいかを確認する場合には、AとBとの傾きを yの増加量 / xの増加量 で求めて、同じことをAとCで実施すればOKですね。
実際の判定式を書く時には、除算を使用すると、0除算の問題や、少数の精度問題が出てくるので、掛け算の形にして判定しています。
# AtCoder Beginner Contest 224
# C - Triangle?
N=int(input())
P=[]
for i in range (N):
X,Y=map(int,input().split())
P.append([X,Y])
ans=0
for i in range (N):
for j in range (i+1,N):
for k in range (j+1,N):
a, b, c = P[i], P[j], P[k]
if (b[1]-a[1]) * (c[0]-a[0]) == (c[1]-a[1]) * (b[0]-a[0]):
continue
else:
ans+=1
print(ans)
コメント