D&C siêu khó
Xem dưới dạng PDF
Gửi bài giải
Điểm:
100
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
256M
đầu vào:
stdin
Đầu ra:
stdout
Tác giả:
Kiểu bài tập
Cho dãy \(A\) gồm \(N\) số nguyên. Cần chia dãy thành chính xác \(K\) đoạn liên tiếp.
Chi phí của đoạn \([l, r]\) là số lượng giá trị phân biệt (distinct) trong đoạn đó.
Tổng chi phí là tổng chi phí các đoạn.
Bình muốn tìm cách chia sao cho tổng chi phí là nhỏ nhất.
Định dạng đầu vào
- Dòng 1: hai số nguyên \(N, K\) (\(1 \le N \le 10^5, 1 \le K \le 200\)).
- Dòng 2: \(N\) số nguyên \(A_1, A_2, \dots, A_N\) (\(1 \le A_i \le 10^9\)).
Định dạng đầu ra
- Một số nguyên duy nhất là tổng chi phí nhỏ nhất.
Ví dụ
Input:
7 3
1 2 1 2 3 1 2
Output:
4
Giải thích: Chia [1 2][1 2 3][1 2]: cost = 2 + 3 + 2 = 7. Tối ưu: [1][2 1][2 3 1 2] → 1 + 2 + 3 = 6. Hoặc [1 2 1][2 3][1 2] → 2 + 2 + 2 = 6. Đáp án đúng là 4 với cách chia [1][2][1 2 3][1 2] (4 đoạn) → không được.
Ràng buộc
| Subtask | Điểm | Ràng buộc |
|---|---|---|
| 1 | 10 | \(N \le 100, K \le 10\) |
| 2 | 20 | \(N \le 1000\) |
| 3 | 30 | \(K \le 50\) |
| 4 | 40 | Không có ràng buộc gì thêm |
Nhận xét