Menu
CoddyTech

Job Sequencing Problem

Ti vengono assegnati n lavori sotto forma di due array: il lavoro i frutta profit[i] se termina entro il tempo deadline[i]. Ogni lavoro richiede un'unità di tempo, ne esegui uno alla volta a partire dal tempo 0 e puoi saltare qualsiasi lavoro. Un lavoro con scadenza 2 può essere eseguito da 0 a 1 oppure da 1 a 2.

Restituisci il profitto totale massimo che puoi ottenere.

Funzione

jobSequencing(deadline: integer-array, profit: integer-array) → integer
deadlineinteger-array
il tempo entro cui ogni attività deve essere completata, da 1 a n
profitinteger-array
quanto guadagna ciascun lavoro; profit[i] corrisponde a deadline[i]
Restituisceinteger
il profitto totale massimo dei lavori che possono essere completati tutti entro le rispettive scadenze

Vincoli

  • 1 ≤ deadline.length == profit.length ≤ 5000
  • 1 ≤ deadline[i] ≤ n, dove n è il numero di lavori
  • 1 ≤ profit[i] ≤ 105
  • Gli array non sono ordinati. Più lavori possono avere la stessa scadenza o lo stesso profitto.

Esempi

Input
deadline = [3, 1, 2, 3, 1]profit = [40, 35, 30, 25, 50]
Output
120
Spiegazione
Solo uno dei due lavori con scadenza 1 può essere svolto, quindi esegui quello che vale 50. Il lavoro che vale 30 termina poi alla sua scadenza 2 e quello che vale 40 alla sua scadenza 3: 50 + 30 + 40 = 120.
challenge icon

Per approfondire

E se il lavoro i richiedesse duration[i] unità di tempo invece di una? Scegliere per primo il lavoro più redditizio dà ancora il miglior totale?

Ripristina il codice
def jobSequencing(deadline, profit):
    # Scrivi il codice qui

Test #1

Test #2

Test #3

Argomenti

deadline = [3, 1, 2, 3, 1]
profit = [40, 35, 30, 25, 50]

Output atteso

120