はい。
AtCoder Beginner Contest 182
ooo--- 817(-42) 下げ。適正は茶色っぽいです。
A - twiblr
a,b=map(int,input().split())
print(max(0,(a*2+100)-b))
問題文の2倍のフォロワー数+100に従う。上のコードはフォロワー数×2しているので微妙に従っていません。
B - Almost GCD
n=int(input())
a=[int(i) for i in input().split()]
ans=chk=0
for i in range(2,1001):
x=[j for j in a if j%i==0]
if len(x)>chk: ans,chk=i,len(x)
print(ans)
問題文を誤読しました。初回提出は数列Aの中で割り切れるの調べました。誤読です。コンテスト中は1001までの素数列挙してから割り切れるを調べましたがN,Aの制約が緩いので列挙は必要ありませんでした。
C - To 3
n=input()
p=[0]*3
for i in n:
x=int(i)%3
p[x]+=1
d=(p[1]+(p[2]*2))%3
if d==0:
print(0)
elif p[1]>0 and ((p[1]-1)+(p[2]*2))%3==0 and (p[0]+(p[1]-1)+(p[2]*2))>0:
print(1)
elif p[2]>0 and (p[1]+((p[2]-1)*2))%3==0 and (p[0]+p[1]+((p[2]-1)*2))>0:
print(1)
elif p[1]>1 and ((p[1]-2)+(p[2]*2))%3==0 and (p[0]+(p[1]-2)+(p[2]*2))>0:
print(2)
elif p[2]>1 and (p[1]+((p[2]-2)*2))%3==0 and (p[0]+p[1]+((p[2]-2)*2))>0:
print(2)
else:
print(-1)
ドはまりして10提出くらいしました。各桁ので解になると思います。各桁の3の剰余を調べます。桁全ての和の3の剰余が0なら取り除く個数0です。
取り除く対象があること、取り除いて0桁になっていないかなどを確認します。場合分けの方針が悪すぎました。3の倍数を完成させて解1,2を確定させるようにしたのは方針が悪かったです。
取り除いてから対象や0桁、倍数を調べたほうが自分には書きやすかったです。
D - Wandering
n=int(input())
a=[int(i) for i in input().split()]
p=[0]*(n+1)
for i in range(n):
p[i+1]=p[i]+a[i]
ans=now=chk=m=r=0
for i in p:
m=max(m,i)
ans=max(ans,now+m)
now=now+i
print(ans)
累積和を調べます。累積和がその地点での移動量の合計です。また、この累積和から最も正の方向に進める瞬間最大?のようなものもわかります。
合計移動量を先頭からまた足し続けるとそれぞれの地点での移動が終わった座標になります。
終わった後の座標だけ見続けると移動結果をシミュするだけになります。結果の座標を見る前に瞬間最大を足した場合の正の最大値を調べるようにすると解になるはずです。
コンテスト時間終わった後のACですがC問題よりスムーズに終わりました。コンテスト時間中の立ち回りも悪かったです。