Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन में k वर्कर्स को हायर करने की न्यूनतम लागत खोजने का प्रोग्राम


मान लीजिए हमारे पास प्रत्येक अलग वर्कर के लिए quality नामक एक ऐरे है, और एक wages नामक ऐरे और एक मान K है। i-वें वर्कर की एक quality[i] और न्यूनतम वेतन अपेक्षा wage[i] है। हम K वर्कर्स को हायर करके एक पेड ग्रुप बनाना चाहते हैं। जब हम K वर्कर्स का ग्रुप हायर कर रहे होते हैं, तो हमें उन्हें निम्नलिखित नियमों के अनुसार भुगतान करना होगा:

  • पेड ग्रुप में प्रत्येक वर्कर को ग्रुप में दूसरों की तुलना में उनकी गुणवत्ता के अनुपात में भुगतान किया जाना चाहिए।
  • पेड ग्रुप में हर वर्कर को कम से कम उनकी न्यूनतम वेतन अपेक्षा का भुगतान किया जाना चाहिए।

हमें उपरोक्त शर्तों को पूरा करने वाले पेड ग्रुप को बनाने के लिए आवश्यक कम से कम पैसे ढूंढने हैं।

उदाहरण के लिए, यदि इनपुट quality = [10,22,5], wage = [70,52,30] और K = 2 है, तो आउटपुट 105.000 होगा क्योंकि हम पहले वर्कर को 70 और तीसरे वर्कर को 35 का भुगतान करेंगे।

हल करने के चरण

  1. qr := एक नई सूची
  2. quality और wage से प्रत्येक जोड़ी (q, w) के लिए:
    • (w/q, q) को qr के अंत में जोड़ें
  3. qr सूची को सॉर्ट करें।
  4. cand := एक नई सूची, csum := 0
  5. i को 0 से K - 1 तक लूप चलाएं:
    • -qr[i][1] को हीप cand में डालें
    • csum := csum + qr[i][1]
  6. ans := csum * qr[K - 1][0]
  7. idx को K से quality के आकार तक लूप चलाएं:
    • -qr[idx][1] को हीप cand में डालें
    • csum := csum + qr[idx][1] + heapq.heappop(cand)
    • ans = min(ans, csum * qr[idx][0])
  8. ans वापस करें।

उदाहरण

बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:

import heapq
def solve(quality, wage, K):
    qr = []
    for q, w in zip(quality, wage):
        qr.append([w/q, q])
    qr.sort()
    cand, csum = [], 0
    for i in range(K):
        heapq.heappush(cand, -qr[i][1])
        csum += qr[i][1]
    ans = csum * qr[K - 1][0]
    for idx in range(K, len(quality)):
        heapq.heappush(cand, -qr[idx][1])
        csum += qr[idx][1] + heapq.heappop(cand)
        ans = min(ans, csum * qr[idx][0])
    return ans

quality = [10,22,5]
wage = [70,52,30]
K = 2
print(solve(quality, wage, K))

इनपुट

[10,22,5], [70,52,30], 2

आउटपुट

105
  1. पायथन में छड़ी काटने की न्यूनतम लागत ज्ञात करने का प्रोग्राम पायथन में छड़ी काटने की न्यूनतम लागत ज्ञात करने का प्रोग्राम

    मान लीजिए हमारे पास एक मान n और cuts नामक एक सरणी है। मान लीजिए n इकाई लंबाई की एक लकड़ी की छड़ी है। छड़ी 0 से n तक लेबल की गई है। यहां cuts[i] एक स्थिति दर्शाता है जहां हम काट सकते हैं। हमें कटौती क्रम में करनी चाहिए, लेकिन हम कटौती के क्रम को अपनी इच्छानुसार बदल सकते हैं। यहां एक कटौती की लागत का

  1. - Python में घरों को रंगने की न्यूनतम लागत खोजने का प्रोग्राम

    मान लीजिए आकार m का एक ऐरे है, जो एक छोटे शहर में m घरों को दर्शाता है, प्रत्येक घर को n रंगों में से एक से रंगा जाना चाहिए (रंग 1 से n तक लेबल किए गए हैं), और कुछ घर पहले से ही रंगे हुए हैं, इसलिए उन्हें फिर से रंगने की जरूरत नहीं है। जिन घरों का रंग समान है उन्हें नेबरहुड कहा जाता है। हमारे पास ऐ

  1. Python में सभी बिंदुओं को जोड़ने की न्यूनतम लागत खोजने का प्रोग्राम Python में सभी बिंदुओं को जोड़ने की न्यूनतम लागत खोजने का प्रोग्राम

    मान लीजिए हमारे पास points नामक एक ऐरे है जिसमें कुछ पॉइंट्स (x, y) के रूप में हैं। अब दो पॉइंट्स (xi, yi) और (xj, yj) को जोड़ने की लागत उनके बीच की मैनहट्टन दूरी है, सूत्र है |xi - xj| + |yi - yj|। हमें सभी पॉइंट्स को जोड़ने की न्यूनतम लागत ढूंढनी है। उदाहरण के लिए, यदि इनपुट है points = [(0,0),(