USACO 2025 - Cowdependence

Xem PDF



Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 2200 (p) Thời gian: 4.0s Bộ nhớ: 512M Input: bàn phím Output: màn hình

\(N\) (\(1\leq N\leq 10^5\)) cô bò của Farmer John được xếp thành một hàng. Cô bò thứ \(i\) có nhãn \(a_i\) (\(1\leq a_i\leq N\)). Một nhóm bò có thể tạo thành một nhóm bạn nếu tất cả có cùng nhãn và mỗi cô bò cách mọi cô bò khác trong nhóm không quá \(x\) cô bò, trong đó \(x\) là một số nguyên thuộc \([1,N]\). Mỗi cô bò phải thuộc đúng một nhóm bạn.

Với mỗi \(x\) từ \(1\) đến \(N\), hãy tính số nhóm bạn nhỏ nhất có thể được tạo thành.

Dữ liệu vào

Dòng đầu chứa một số nguyên \(N\).

Dòng tiếp theo chứa \(a_1\dots a_N\), là nhãn của từng cô bò.

Dữ liệu ra

Với mỗi \(x\) từ \(1\) đến \(N\), in trên một dòng mới số nhóm bạn nhỏ nhất ứng với \(x\) đó.

Phân nhóm

  • Các test 2–3: \(N\leq 5000\).
  • Các test 4–7: \(a_i\leq 10\) với mọi \(i\).
  • Các test 8–11: Không nhãn nào xuất hiện quá \(10\) lần.
  • Các test 12–20: Không có ràng buộc bổ sung.

Ví dụ

Ví dụ 1

Input
9
1 1 1 9 2 1 2 1 1
Output
7
5
4
4
4
4
4
3
3
Giải thích

Dưới đây là các ví dụ về cách phân bò vào các nhóm bạn khi \(x=1\)\(x=2\) sao cho số nhóm là nhỏ nhất. Mỗi chữ cái tương ứng với một nhóm khác nhau.

       1 1 1 9 2 1 2 1 1
x = 1: A B B C D E F G G (7 nhóm)
x = 1: A A B C D E F G G (7 nhóm, một cách chia khác)
x = 2: A A A B C D C E E (5 nhóm)
x = 2: A A A B C D C D E (5 nhóm, một cách chia khác)

Nguồn

Đề bài gốc: USACO 2024 December Contest, Gold — Cowdependence

Tác giả: Chongtian Ma.

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.

Kỳ thi: