Hướng dẫn giải của Hoạt động trại đông

Chỉ dùng lời giải này khi không có ý tưởng, và đừng copy-paste code từ lời giải này. Hãy tôn trọng người ra đề và người làm lời giải.


Nộp code mẫu trước khi tự giải được bài tập là một hành vi có thể bị ban.

Subtask ~1~ ~(n \le 15~ và ~m \le 3)~:

  • Ở ngày thứ ~i~, ta thử lần lượt từng hoạt động để xây dựng toàn bộ trường hợp có thẻ có (quay lui).
  • Đpt: ~O(n^m)~.

Subtask ~2~ ~(n \le 1000~ và ~m \le 100)~:

  • Ta có công thứ quy hoạch động như sau: ~dp[i][j] = max(dp[i][k]) + a[i][j]~ với ~1 \le k \le m~ và ~k \ne j~.
  • Đpt: ~O(n \times m^2)~.

Subtask ~3~ (Ràng buộc gốc):

  • Nhận thấy rằng, ở ô ~_{i, j}~ khi lựa chọn cấu hình trước đó ta chỉ quan tâm đến ~max_1(dp[i-1][])~ hoặc ~max_2(dp[i-1][])~ nếu ở ~max_1~ đã chọn hoạt động thứ ~j~.
  • Đến đây, ta chỉ cần lưu lại giá trị ~max_1~ và ~max_2~ mỗi khi xây dựng mảng ~dp~ ở ngày thứ ~i~ để sử dụng cho ngày thứ ~i + 1~.
  • Đpt ~O(n \times m)~.

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.