Menu
CoddyTech

Job Sequencing Problem

Kamu mendapatkan n pekerjaan dalam bentuk dua array: pekerjaan i menghasilkan profit[i] jika selesai paling lambat pada waktu deadline[i]. Setiap pekerjaan membutuhkan satu satuan waktu, kamu menjalankan satu pekerjaan pada satu waktu mulai dari waktu 0, dan kamu boleh melewati pekerjaan apa pun. Pekerjaan dengan tenggat waktu 2 dapat dijalankan dari 0 hingga 1 atau dari 1 hingga 2.

Kembalikan total profit terbesar yang bisa kamu peroleh.

Fungsi

jobSequencing(deadline: integer-array, profit: integer-array) → integer
deadlineinteger-array
batas waktu setiap pekerjaan harus diselesaikan, dari 1 hingga n
profitinteger-array
penghasilan setiap pekerjaan; profit[i] sesuai dengan deadline[i]
Mengembalikaninteger
jumlah keuntungan total terbesar dari pekerjaan yang semuanya dapat diselesaikan sebelum tenggat waktunya

Batasan

  • 1 ≤ deadline.length == profit.length ≤ 5000
  • 1 ≤ deadline[i] ≤ n, dengan n adalah jumlah pekerjaan
  • 1 ≤ profit[i] ≤ 105
  • Array tidak diurutkan. Beberapa pekerjaan dapat memiliki tenggat waktu atau keuntungan yang sama.

Contoh

Input
deadline = [3, 1, 2, 3, 1]profit = [40, 35, 30, 25, 50]
Output
120
Penjelasan
Hanya satu dari dua pekerjaan dengan tenggat 1 yang muat, jadi jalankan pekerjaan yang bernilai 50. Pekerjaan yang bernilai 30 kemudian selesai tepat pada tenggatnya, yaitu 2, dan pekerjaan yang bernilai 40 selesai tepat pada tenggatnya, yaitu 3: 50 + 30 + 40 = 120.
challenge icon

Pertanyaan lanjutan

Bagaimana jika pekerjaan i membutuhkan duration[i] satuan waktu, bukan satu? Apakah mengambil pekerjaan yang paling menguntungkan terlebih dahulu tetap menghasilkan total terbaik?

Reset kode
def jobSequencing(deadline, profit):
    # Tulis kodemu di sini

Tes #1

Tes #2

Tes #3

Argumen

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

Output yang diharapkan

120