ABC094-B - Toll Gates を解く
ABC094-B - Toll Gates
初期位置から目的地までにいくつかの料金所を経由する
そのコストの最小値を求める問題
初期位置から目的地に向かって
1ずつ動かしていった場合をシミュレーションして解く
目的地は2つあるので、どちらの場合もシミュレーションしてみて
コストが小さい方を出力する
以上を踏まえて書いたコードを以下に示す
提出したコード
# 入力 N,M,X=map(int,input().split()) l=list(map(int,input().split())) # 現在位置 _X=X # コスト c1=c2=0 # 目的地に向かって1ずつ動かす(X->N) for i in range(N-X): # 移動 _X+=1 # 料金所があればコストを加算 if l.count(_X)>0: c1+=1 # 現在位置をリセット _X=X # 目的地に向かって1ずつ動かす(X->0) for i in range(X-0): # 移動 _X-=1 # 料金所があればコストを加算 if l.count(_X)>0: c2+=1 # コストが小さい方を出力 print(min(c1,c2))
1パターン目のシミュレーションで使った現在位置を示す変数を
そのまま2パターン目のシミュレーションで使いまわすと
正しい値が得られなくなってしまうので注意
そのため上記では一度、現在位置を示す変数の値をリセットしている
# 現在位置
_X=X
提出結果はACでした