[BOJ/Python]14493号フルーツ
今回の問題は、所要時間を累積し、現在の待ち時間内に、その区間のA+Bを残りのBで割ってBに等しい場合、次の区間に移動し、所要時間の積算を解くことによって解決することである.
最初は待ち時間を累計して1回増やしたが、正解はあったものの、性能は芳しくなかった. nと入力します. 区間で、AとBの情報を保存するbot配列が発表された. は、現在の所要時間を表す変数curを0として定義する. 0からnまで繰り返されるiに対してfor文を行う.
->aとbを入力し、aとbを含む配列をbot配列に入れます. 第1セグメントはBを待たなければならないので、curにbot[0][1]、すなわちB[0]を加える. while文は、区間を表す変数iを1として定義する.(最初のセグメントに入った) iがnより小さい場合、ドアを回転させる.
->所要時間の経過を表すためにcurに1を加える.(次の区間に移動するには1秒、移動しなくても1秒)
->cur%(bot[i][0]+bot[i][1])がbot[i][1]以上であれば、次の区間に移動できるため、i 1を増やす. 出力 cur+1. nと入力します. 区間で、AとBの情報を保存するbot配列が発表された. は、現在の所要時間を表す変数curを0として定義する. 0からnまで繰り返されるiに対してfor文を行う.
->aとbを入力し、aとbを含む配列をbot配列に入れます. 第1セグメントはBを待たなければならないので、curにbot[0][1]、すなわちB[0]を加える. while文は、区間を表す変数iを1として定義する.(最初のセグメントに入った) iがnより小さい場合、ドアを回転させる.
->所要時間の経過を表すためにcurに1を加える.(次の区間に移動するには1秒、移動しなくても1秒)
->cur%(bot[i][0]+bot[i][1])がbot[i][1]以上であれば、次の区間に移動できるため、i 1を増やす.
->そうでなければ、curにbot[i][1]-cur%(bot[i][0]+bot[i][1])-1を加える.最後に1を減算したのは、次の反復で1を加算するためです. 出力 cur+1. Code
最初は待ち時間を累計して1回増やしたが、正解はあったものの、性能は芳しくなかった.
->aとbを入力し、aとbを含む配列をbot配列に入れます.
->所要時間の経過を表すためにcurに1を加える.(次の区間に移動するには1秒、移動しなくても1秒)
->cur%(bot[i][0]+bot[i][1])がbot[i][1]以上であれば、次の区間に移動できるため、i 1を増やす.
n=int(input())
bot=[]
cur=0
for i in range(n):
a, b=map(int, input().split())
bot.append([a, b])
cur+=bot[0][1]
i=1
while i<n:
cur+=1
if cur%(bot[i][0]+bot[i][1])>=bot[i][1]:
i+=1
print(cur+1)
正解処理は行われていますが、4836 msが必要です.削減できる方法を考えて、次の段階に進めない場合は、所要時間内に所要時間を追加することを実施する.->aとbを入力し、aとbを含む配列をbot配列に入れます.
->所要時間の経過を表すためにcurに1を加える.(次の区間に移動するには1秒、移動しなくても1秒)
->cur%(bot[i][0]+bot[i][1])がbot[i][1]以上であれば、次の区間に移動できるため、i 1を増やす.
->そうでなければ、curにbot[i][1]-cur%(bot[i][0]+bot[i][1])-1を加える.最後に1を減算したのは、次の反復で1を加算するためです.
Code n=int(input())
bot=[]
cur=0
for i in range(n):
a, b=map(int, input().split())
bot.append([a, b])
cur+=bot[0][1]
i=1
while i<n:
cur+=1
if cur%(bot[i][0]+bot[i][1])>=bot[i][1]:
i+=1
else:
cur+=(bot[i][1]-cur%(bot[i][0]+bot[i][1])-1)
print(cur+1)
時間が2208ミリ秒と半分以上減ったことが確認できた.
Reference
この問題について([BOJ/Python]14493号フルーツ), 我々は、より多くの情報をここで見つけました
https://velog.io/@xx0hn/BOJ-Python-14493번-과일노리
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
n=int(input())
bot=[]
cur=0
for i in range(n):
a, b=map(int, input().split())
bot.append([a, b])
cur+=bot[0][1]
i=1
while i<n:
cur+=1
if cur%(bot[i][0]+bot[i][1])>=bot[i][1]:
i+=1
else:
cur+=(bot[i][1]-cur%(bot[i][0]+bot[i][1])-1)
print(cur+1)
Reference
この問題について([BOJ/Python]14493号フルーツ), 我々は、より多くの情報をここで見つけました https://velog.io/@xx0hn/BOJ-Python-14493번-과일노리テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol