Làm cách nào tôi có thể tính số tiền tối đa kiếm được từ vé m của vé n vé mà giá vé bằng với số lượng vé của cửa sổ đó?Thuật toán thu nhập tối đa
Có 3 cửa sổ vé trong ga đường sắt. Cửa sổ có sẵn (j) vé có sẵn. Giá của một vé bằng với số lượng vé còn lại trong cửa sổ đó tại thời điểm đó. Số tiền tối đa mà nhà ga có thể kiếm được từ việc bán vé m đầu tiên là bao nhiêu?
Ví dụ: nếu chúng tôi có 3 cửa sổ vé, có vé 3, 3, 4 và chúng tôi muốn bán 5 vé. Sau đó:
n = 3, m = 5
A[3] = {3, 3, 4}
Số tiền tối đa thu được là 4 + 3 + 3 + 3 + 2 = 15
tôi thấy câu hỏi này trực tuyến và giải pháp của tôi là trước tiên đẩy tất cả vé số để một maxHeap và chạy một cho vòng lặp cho m lần. Mỗi lần chúng ta bật giá trị cao nhất của giá trị tối đa và thêm nó vào tổng số tiền kiếm được và nếu giá trị lớn hơn 1 chúng tôi đẩy (giá trị - 1) vào giá trị tối đa.
Nhưng điều này bằng cách nào đó quá tốn thời gian cho bất kỳ giải pháp nào tốt hơn?
Bạn không cần phải loại bỏ vé một bởi một. Nếu bạn có một cửa sổ trên cùng, bạn cần phải biết có bao nhiêu vé và có bao nhiêu vé tiếp theo. Sau đó, bạn có thể loại bỏ sự khác biệt và tính tổng giá trong một thao tác. Với một sửa đổi nhỏ, bạn có thể làm tương tự nếu bạn có nhiều cửa sổ với cùng số lượng vé tối đa. –
Tha thứ cho tôi nhưng tôi thực sự gặp khó khăn trong việc giải mã câu hỏi đang được hỏi tại đây. A (j) đại diện cho gì (chúng ta có được một mảng vé cho mỗi cửa sổ không?). – Xelad1