AtCoder Beginner Contest 167
はい。
https://atcoder.jp/contests/abc167
oooo-- 917(-3) D問題まで。久しぶりだったのでこんなものでしょう。
A - Registration
PyPy3
s=input() t=input() print("Yes" if s+t[-1]==t else "No")
T.replace(S,"")とかで比較して提出しそうになったけどa,aaとかの場合に非常に都合が悪いことに気づいて方針変更してAC。
B - Easy Linear Programming
PyPy3
a,b,c,k=map(int,input().split()) ans=0 ans+=1*min(a,k) k=max(0,k-a) k=max(0,k-b) ans+=-1*k print(ans)
ABCの順に使えばいいと思う。それをforで処理しようとしたけど上手い書き方が出てきませんでした。1ステップずつごりごり書いてAC。
C - Skill Up
PyPy3
mod=1000000007 n,m,x=map(int,input().split()) w=[] for i in range(n): w.append([int(i) for i in input().split()]) ans=mod for i in range(2**n): d=0 chk=[0]*m for j in range(n): if (i>>j&1): d+=w[j][0] for k in range(m): chk[k]+=w[j][k+1] if min(chk)>=x: ans=min(ans,d) print(ans if ans!=mod else -1)
全部調べる。理解度が足りない場合に-1にするのを忘れて無駄にWA。
D - Teleporter
PyPy3
n,k=map(int,input().split()) a=[int(i) for i in input().split()] w=[1] x=set([1]) for i in range(k): t=a[w[-1]-1] if t in x: break x.add(t) w.append(t) p=w.index(t) k-=p loop=len(w)-p print(w[p+k%loop])
方針はすぐたったのですが方針通りに書けず。。町の数よりもわがままテレポート回数の方が多いので移動がループになる箇所が必ずあるはず。町1スタートしてループ開始する区間を探す。サンプル1は町1からループする。サンプル2は進んだ先の町2がループ開始かな、多分。
E問題以降はあとで