1449:水利攻航勝
質問する
コード#コード# import sys
input =sys.stdin.readline
n,l = map(int,input().split())
places = list(map(int,input().split()))
places.sort()
start = places[0]
end = places[0]+l ; cnt=1
for place in places:
if end<=place: #사이에 있는 경우
start = place
end = place+l
cnt+=1
print(cnt)
解説
n,l入力,places入力,並べ替え.
その理由は位置が昇順で見なければ、次から次へと検査できないからです.
次にstart、end変数を初期化し、startは一番前の部分で、endはstartにテープの長さを加えた場所です.
位置から左右に0.5を巻くので、それぞれの位置に1のテープを貼ると思います.
つまり、1,2の位置をブロックするためには、2の長さのテープが必要であり、貼る場所は0.5から2.5の2の長さであり、さらに0.5を加えると1から3と考えられる.
次にforゲートを迂回し、中間の部分を無視し、後ろの部分が前の最後の部分よりも大きい場合、start、endを初期化し、cnt 1をアップロードする.
Reference
この問題について(1449:水利攻航勝), 我々は、より多くの情報をここで見つけました
https://velog.io/@seochan99/1449-수리공-항승
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
import sys
input =sys.stdin.readline
n,l = map(int,input().split())
places = list(map(int,input().split()))
places.sort()
start = places[0]
end = places[0]+l ; cnt=1
for place in places:
if end<=place: #사이에 있는 경우
start = place
end = place+l
cnt+=1
print(cnt)
解説
n,l入力,places入力,並べ替え.
その理由は位置が昇順で見なければ、次から次へと検査できないからです.
次にstart、end変数を初期化し、startは一番前の部分で、endはstartにテープの長さを加えた場所です.
位置から左右に0.5を巻くので、それぞれの位置に1のテープを貼ると思います.
つまり、1,2の位置をブロックするためには、2の長さのテープが必要であり、貼る場所は0.5から2.5の2の長さであり、さらに0.5を加えると1から3と考えられる.
次にforゲートを迂回し、中間の部分を無視し、後ろの部分が前の最後の部分よりも大きい場合、start、endを初期化し、cnt 1をアップロードする.
Reference
この問題について(1449:水利攻航勝), 我々は、より多くの情報をここで見つけました
https://velog.io/@seochan99/1449-수리공-항승
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について(1449:水利攻航勝), 我々は、より多くの情報をここで見つけました https://velog.io/@seochan99/1449-수리공-항승テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol