#HSGHNTHPT052006. Chia nhóm (Grouping)
Chia nhóm (Grouping)
Chia nhóm (Grouping)
Nguồn: Kỳ thi chọn HSG thành phố Hà Nội và chọn đội tuyển HSG dự thi Olympic quốc gia các môn văn hóa lớp 12 THPT năm học 2026–2027 — Môn Tin học (Bảng A), Bài 5
Phiên bản: Phước Hưng OJ Extended
Đề bài
Cho dãy số gồm số nguyên . Cần chia dãy thành các nhóm sao cho:
- Mỗi nhóm chứa ít nhất một phần tử.
- Mỗi nhóm gồm các phần tử liên tiếp của dãy.
- Mỗi phần tử thuộc đúng một nhóm.
- Không có giá trị nào xuất hiện trong nhiều hơn nhóm.
Ví dụ, với , có thể chia thành nhóm:
.
Cách chia không hợp lệ vì giá trị xuất hiện trong nhóm.
Hãy tìm cách chia dãy thành nhiều nhóm nhất và in ra số nhóm lớn nhất có thể tạo được.
Input
- Dòng đầu tiên chứa số nguyên dương .
- Dòng thứ hai chứa số nguyên .
Output
In ra một số nguyên dương là số lượng nhóm lớn nhất có thể chia được.
Subtask
- Ràng buộc chung: , .
- Subtask 1 — điểm: .
- Subtask 2 — điểm: dãy đã cho theo thứ tự không giảm.
- Subtask 3 — điểm: .
- Subtask 4 — điểm: không có ràng buộc thêm.
Ví dụ
Input
5
1 2 1 2 1
Output
3
Giải thích
Có thể chia thành nhóm, chẳng hạn:
.
Khi đó giá trị xuất hiện trong nhóm thứ nhất và nhóm thứ ba; giá trị xuất hiện trong nhóm thứ hai và nhóm thứ ba. Mỗi giá trị đều xuất hiện trong không quá nhóm. Không thể chia dãy thành nhóm mà vẫn thỏa mãn yêu cầu.
Liên quan
Trong các cuộc thi sau: