Tôi mới ở đây nhưng đã tìm thấy câu hỏi trong sách giáo khoa của tôi. Thật không may nó không có câu trả lời vì vậy tôi đã tự hỏi nếu ai đó có thể xin vui lòng giúp đỡ. Câu hỏi là:Thuật toán tốt nhất để mời mọi người tham gia
Bạn có nhiệm vụ truyền bá lời mời trong công ty. Bạn chỉ có thời gian để nói chuyện với một số người nhất định, nhưng bạn được đảm bảo rằng nếu bạn mời ai đó, họ sẽ mời ông chủ của họ, người đó sẽ mời ông chủ của họ, v.v., tất cả các con đường đến CEO. Bạn đã vạch ra toàn bộ hệ thống phân cấp công ty và chỉ định giá trị cho mỗi người, cho biết mức độ mời họ có giá trị. Với thiết lập này và giới hạn về số người bạn có thể nói chuyện, bạn muốn tính toán số lượng tối ưu tập hợp những người được mời. Một nhóm người tối ưu sẽ tối đa hóa tổng giá trị của tất cả những người được mời, trực tiếp hoặc gián tiếp, theo lựa chọn của bạn.
Sẽ có chính xác một người, Giám đốc điều hành, không có ông chủ trong hệ thống phân cấp. Tất cả những người khác cuối cùng sẽ trả lời người này trong chuỗi lệnh, nhưng không nhất thiết phải trực tiếp .
Bạn được đảm bảo rằng mỗi người sẽ có tối đa một ông chủ, nhưng ông chủ đó có thể có một lần lượt khác. Ví dụ, người A có thể có một ông chủ B, có ông chủ là C, có ông chủ là D, có ông chủ là Giám đốc điều hành. Do đó ảnh hưởng đến người A sẽ tự động ảnh hưởng đến B, C, D và CEO.
Các nhân viên khác nhau có thể có các điểm chung trong chuỗi lệnh. Bạn KHÔNG nhận thêm giá trị để ảnh hưởng đến một người nhiều lần. Ví dụ: nếu A và B trả lời trực tiếp cho Giám đốc điều hành và bạn ảnh hưởng cả hai, bạn sẽ nhận giá trị val (A) + val (B) + val (CEO), chứ không phải val (A) + val (B) + 2val (Giám đốc điều hành).
Cho số nguyên dương j, chọn j người mà cuối cùng sẽ cho kết quả là trong giá trị tổng thể lớn nhất.
Tôi biết rằng phương pháp tiếp cận vũ lực là chỉ tìm kiếm danh sách cho giá trị lớn nhất j lần, nhưng điều đó không hữu ích lắm. Tôi nghĩ rằng có một phương pháp lập trình động nhưng nỗ lực của tôi không phải lúc nào cũng cung cấp câu trả lời đúng. Bất kỳ trợ giúp sẽ được đánh giá cao!
Nó phức tạp hơn một chút những người thấp nhất nói một cách phân cấp: một số người trong số họ có thể có một tổ tiên chung! – Rerito
Chính xác - Một cách tiếp cận mà tôi đã thử là lặp lại các nhân viên cấp thấp nhất này, chọn tối đa và cập nhật giá trị của những người khác, nhưng nó vẫn cực kỳ chậm và chắc chắn không tối ưu. –
Để làm rõ, hạn chế nào — số người có thể tham dự bữa tiệc hoặc số lời mời bạn có thể viết? (Không giống nhau vì một số người được mời gián tiếp) –