Chia đoạn theo số màu
Đề bài
Mô tả
Cho một dãy gồm số nguyên dương , mỗi số là một "màu" trong khoảng .
Với một số nguyên dương , ta cần chia dãy thành ít nhất các đoạn con liên tiếp sao cho mỗi đoạn chứa không quá giá trị phân biệt. Gọi là số đoạn tối thiểu cần thiết.
Yêu cầu: với mọi , hãy tính giá trị .
Dữ liệu vào
- Dòng đầu chứa số nguyên — số phần tử của dãy.
- Dòng thứ hai chứa số nguyên cách nhau bởi dấu cách.
Dữ liệu ra
In ra một dòng gồm số nguyên cách nhau bởi dấu cách.
Ràng buộc
- Thời gian: giây. Bộ nhớ: MB.
- Bài này chỉ chấp nhận lời giải C++.
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 5 1 3 4 3 3 |
4 2 1 1 1 | Với , chia: [1], [3], [4], [3, 3] — cần 4 đoạn. Với , chia: [1], [3, 4, 3, 3] — cần 2 đoạn. Với , cả dãy là một đoạn. |
| 8 1 5 7 8 1 7 6 1 |
8 4 3 2 1 1 1 1 | Với mỗi phần tử là một đoạn riêng. Với : [1,5], [7,8], [1,7], [6,1]. Với trở lên, cả dãy nằm trong một đoạn duy nhất. |
Bình luận