Jak mogę obliczyć maksymalne zarobione pieniądze z m biletów w oknach z biletami, że cena biletu jest równa liczbie losów biletów w tym oknie?maksymalny algorytm zarobkowania
Na dworcu kolejowym znajduje się n okien biletowych. Okno z ma dostępne bilety (j). Cena biletu jest równa liczbie biletów pozostałych w tym oknie w tym czasie. Jaka jest maksymalna kwota, jaką dana stacja kolejowa może zarobić ze sprzedaży pierwszych m biletów?
Na przykład, jeśli mamy 3 okna biletowe, mamy bilety 3, 3, 4 i chcemy sprzedać 5 biletów. Następnie:
n = 3, m = 5
A[3] = {3, 3, 4}
Maksymalna zarobione pieniądze jest 4 + 3 + 3 + 3 + 2 = 15
Widziałem to pytanie online i moje rozwiązanie jest najpierw wcisnąć wszystkie bilety numerów do maxHeap i uruchomić dla pętli dla m razy. Za każdym razem, gdy pobieramy najwyższą wartość maxHeap i dodajemy do całkowitej zarobionej kwoty, a jeśli wartość jest większa niż 1, wciskamy (wartość - 1) do maxHeap.
Ale to jest zbyt czasochłonne lepsze rozwiązania?
Nie trzeba usunąć jeden bilety o jeden. Jeśli masz najwyższe okno, musisz wiedzieć, ile biletów posiada i ile biletów ma następny. Następnie możesz usunąć różnicę i obliczyć łączną cenę w jednej operacji. Z niewielkimi modyfikacjami możesz zrobić to samo, jeśli masz kilka okien z taką samą maksymalną liczbą biletów. –
Przebacz mi, ale mam problem z odczytaniem pytania, które tu zadam. Co oznacza (j) (czy otrzymujemy tablicę biletów na okno?). – Xelad1