मान लीजिए, हमारे पास N आइटम हैं, जिन्हें 0, 1, 2,…, N-1 के रूप में चिह्नित किया गया है। फिर, हमें आकार S की एक 2D सूची दी जाती है जिसे सेट कहा जाता है। यहां, हम मूल्य सेट [i, 2] के लिए i-th सेट खरीद सकते हैं, और हम सेट [i, 0] से सेट [i, 1] के बीच प्रत्येक आइटम प्राप्त करते हैं। इसके अलावा, हमारे पास आकार N की एक सूची है जिसे रिमूवल कहा जाता है, जहां हम मूल्य हटाने के लिए i-वें तत्व के 1 उदाहरण को फेंक सकते हैं [i]। इसलिए, हमें 0 से लेकर N-1 तक प्रत्येक तत्व में से एक को खरीदने के लिए न्यूनतम लागत का पता लगाना होगा, या यदि ऐसा नहीं किया जा सकता है तो परिणाम -1 है।
So, if the input is like sets = [ [0, 4, 4], [0, 5, 12], [2, 6, 9], [4, 8, 10] ]
निष्कासन =[2, 5, 4, 6, 8], तो आउटपुट 4 होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
N :=निष्कासन का आकार
-
ग्राफ:=आकार के लिए एक नया मैट्रिक्स (N + 1) x (N + 1)
-
सेट में प्रत्येक s, e, w के लिए करें
-
[e+1, w] को ग्राफ़ में जोड़ें[s]
-
-
प्रत्येक i के लिए, r अनुक्रमणिका i में और आइटम r निष्कासन में, करें
-
[i, r] को ग्राफ़ में जोड़ें[i + 1]
-
-
pq :=एक नया ढेर
-
जिला:=एक नया नक्शा
-
जिला [0] :=0
-
जबकि pq खाली नहीं है, करें
-
d, e :=हीप pq से छोटी से छोटी वस्तु को हटा दें
-
अगर dist[e]
-
अगला पुनरावृत्ति जारी रखें
-
-
यदि e, N के समान है, तो
-
वापसी d
-
-
प्रत्येक नी के लिए, ग्राफ़ में w[e], do
-
d2 :=d + w
-
अगर d2
-
जिला [नेई] :=d2
-
pq में [d2, nei] जोड़ें
-
-
-
-
वापसी -1
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
import heapq
from collections import defaultdict
class Solution:
def solve(self, sets, removals):
N = len(removals)
graph = [[] for _ in range(N + 1)]
for s, e, w in sets:
graph[s].append([e + 1, w])
for i, r in enumerate(removals):
graph[i + 1].append([i, r])
pq = [[0, 0]]
dist = defaultdict(lambda: float("inf"))
dist[0] = 0
while pq:
d, e = heapq.heappop(pq)
if dist[e] < d:
continue
if e == N:
return d
for nei, w in graph[e]:
d2 = d + w
if d2 < dist[nei]:
dist[nei] = d2
heapq.heappush(pq, [d2, nei])
return -1
ob = Solution()
print (ob.solve([
[0, 4, 4],
[0, 5, 12],
[2, 6, 9],
[4, 8, 10]
], [2, 5, 4, 6, 8])) इनपुट
[[0, 4, 4], [0, 5, 12], [2, 6, 9], [4, 8, 10]], [2, 5, 4, 6, 8]
आउटपुट
4