ধরুন আমাদের কাছে শো নামক স্ট্রিংগুলির তালিকার একটি তালিকা রয়েছে, এছাড়াও একটি পূর্ণসংখ্যার তালিকা রয়েছে যাকে বলা হয় সময়কাল, এবং আরেকটি মান k, এখানে দেখায়[i] এবং সময়কাল[i] একটি শো এবং এর সময়কাল ith ম্যান দেখেছে, আমাদের কাছে রয়েছে k সর্বাধিক দেখা শোগুলির মোট সময়কাল খুঁজে বের করতে৷
৷সুতরাং, যদি ইনপুটটি শো এর মত হয় =["The BGT", "Jack jumper", "The BGT", "Jokers Company", "Music magic"] সময়কাল =[10, 8, 10, 18, 9] k =2, তাহলে আউটপুট হবে 38, কারণ শীর্ষ 2টি সর্বাধিক দেখা শো হল "জোকার্স কোম্পানি" এবং "দ্য বিজিটি" এবং মোট সময়কাল 18 এবং 10 + 10 =20৷
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
যদি শো খালি হয় বা সময়কাল খালি হয় বা k 0 হয়, তাহলে
-
রিটার্ন 0
-
-
d :=একটি খালি অভিধান
-
আমি 0 থেকে শো এর আকারের মধ্যে, কর
-
d[দেখায়[i]] :=d[শো[i]] + সময়কাল[i]
-
-
l :=একটি নতুন তালিকা
-
প্রতিটি i এর জন্য d, do
-
l
এর শেষে d[i] সন্নিবেশ করুন
-
-
তালিকাটিকে l বিপরীত ক্রমে সাজান
-
i :=0
-
উত্তর :=0
-
যখন আমি
-
উত্তর :=উত্তর + l[i]
-
i :=i + 1
-
-
প্রত্যাবর্তন উত্তর
উদাহরণ
আসুন আরও ভালভাবে বোঝার জন্য নিম্নলিখিত বাস্তবায়ন দেখি
from collections import defaultdict
def solve(shows, durations, k):
if not shows or not durations or not k:
return 0
d = defaultdict(int)
for i in range(len(shows)):
d[shows[i]] += durations[i]
l = []
for i in d:
l.append(d[i])
l.sort(reverse=True)
i = 0
answer = 0
while i < k:
answer += l[i]
i += 1
return answer
shows = ["The BGT", "Jack jumper", "The BGT", "Jokers Company",
"Music magic"]
durations = [10, 8, 10, 18, 9]
k = 2
print(solve(shows, durations, k)) ইনপুট
["The BGT", "Jack jumper", "The BGT", "Jokers Company", "Music magic"], [10, 8, 10, 18, 9], 2
আউটপুট
38