[白駿8980]速達
1.問題の説明
n.速達
2.問題分析
当初は出発基準の昇順に並べられていたが、解けない場合もあった.1番ノードからなので、1番に一番近い位置に着いたときには、「宅配便の出発地から到着するまで、どれだけの荷物を持っていくか」が主な確認ポイントになります.配列により各区間の宅配便重量及び各区間の最低価格が得られる.
3.私の回答 import sys
import heapq
n, c = map(int, sys.stdin.readline().rstrip().split())
m = int(sys.stdin.readline().rstrip())
pq = []
for _ in range(m):
start, end, weight = map(int, sys.stdin.readline().rstrip().split())
heapq.heappush(pq, [end, start, weight])
# 도착 순서대로 오름차순 정렬
box = [0 for _ in range(n+1)]
total = 0
while pq:
end, start, weight = heapq.heappop(pq)
box_weight, box_max = 0, max(box[start:end])
# box_max는 해당 택배 출발 이후 도착 전까지 가장 무게가 많을 때의 무게
if box_max + weight <= c: box_weight = weight
else: box_weight = c - box_max
# box_max가 곧 이 구간 전체 중 최댓값이므로 box_weight + c <= box_max 보장된다.
for i in range(start, end):
box[i] += box_weight
# 올릴 수 있을 만큼 해당 택배 박스를 싣고 다닐 구간에 더해준다.
total += box_weight
# 추가한 택배 무게만큼 더한다.
print(total)
Reference
この問題について([白駿8980]速達), 我々は、より多くの情報をここで見つけました
https://velog.io/@j_aion/백준-8980-택배
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
当初は出発基準の昇順に並べられていたが、解けない場合もあった.1番ノードからなので、1番に一番近い位置に着いたときには、「宅配便の出発地から到着するまで、どれだけの荷物を持っていくか」が主な確認ポイントになります.配列により各区間の宅配便重量及び各区間の最低価格が得られる.
3.私の回答 import sys
import heapq
n, c = map(int, sys.stdin.readline().rstrip().split())
m = int(sys.stdin.readline().rstrip())
pq = []
for _ in range(m):
start, end, weight = map(int, sys.stdin.readline().rstrip().split())
heapq.heappush(pq, [end, start, weight])
# 도착 순서대로 오름차순 정렬
box = [0 for _ in range(n+1)]
total = 0
while pq:
end, start, weight = heapq.heappop(pq)
box_weight, box_max = 0, max(box[start:end])
# box_max는 해당 택배 출발 이후 도착 전까지 가장 무게가 많을 때의 무게
if box_max + weight <= c: box_weight = weight
else: box_weight = c - box_max
# box_max가 곧 이 구간 전체 중 최댓값이므로 box_weight + c <= box_max 보장된다.
for i in range(start, end):
box[i] += box_weight
# 올릴 수 있을 만큼 해당 택배 박스를 싣고 다닐 구간에 더해준다.
total += box_weight
# 추가한 택배 무게만큼 더한다.
print(total)
Reference
この問題について([白駿8980]速達), 我々は、より多くの情報をここで見つけました
https://velog.io/@j_aion/백준-8980-택배
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
import sys
import heapq
n, c = map(int, sys.stdin.readline().rstrip().split())
m = int(sys.stdin.readline().rstrip())
pq = []
for _ in range(m):
start, end, weight = map(int, sys.stdin.readline().rstrip().split())
heapq.heappush(pq, [end, start, weight])
# 도착 순서대로 오름차순 정렬
box = [0 for _ in range(n+1)]
total = 0
while pq:
end, start, weight = heapq.heappop(pq)
box_weight, box_max = 0, max(box[start:end])
# box_max는 해당 택배 출발 이후 도착 전까지 가장 무게가 많을 때의 무게
if box_max + weight <= c: box_weight = weight
else: box_weight = c - box_max
# box_max가 곧 이 구간 전체 중 최댓값이므로 box_weight + c <= box_max 보장된다.
for i in range(start, end):
box[i] += box_weight
# 올릴 수 있을 만큼 해당 택배 박스를 싣고 다닐 구간에 더해준다.
total += box_weight
# 추가한 택배 무게만큼 더한다.
print(total)
Reference
この問題について([白駿8980]速達), 我々は、より多くの情報をここで見つけました https://velog.io/@j_aion/백준-8980-택배テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol