内容
codeforces.com
考えたこと
- TSPだけど、N<=10*5なので、greedyとかで行けそう。
- beautyが大きいところから、小さいところには、cでいける。
- 一番beautyが大きい都市まで行けば、あとは、残りを辿るだけで良くなる。
ポイント
- どんな移動をしても、最低で C=sum(c_i)はかかる。
- max_beautyの都市まで行けば、あとは c_iだけの移動になる。
- city1-> max_beauty_city間での、最短路を求めればいい。
実装
N = int(input())
costs=[list(map(int,input().split())) for _ in range(N)]
costs=[(a,a+b) for a,b in costs]
costs = sorted(costs,key=lambda x:x[0])
min_ans=sum(v[1]-v[0] for v in costs)
dist=costs[0][0]
print("sort=>",costs)
for i in range(N):
min_ans += max(0,costs[i][0]-dist)
dist = max(dist,costs[i][1])
print(min_ans)
* atcoderのどこかにも、似た問題があった気がした。
思い出せないけど・