Phân loại đề bài
Đề bài được phân loại theo 3 tiêu chí:
1. Danh mục
Phân loại theo người tham gia. Từ các đề bài đơn giản cho người mới học lập trình đến các vấn đề chưa có lời giải dành cho các chuyên gia lập trình. Ứng với điểm số tối đa cho mỗi bài:
- Các bài mẫu là các bài tập đã có lời giải sẵn ở phần solution, dùng để người mới học có thể làm quen và so sánh két quả
- Người mới học lập trình cần các đề bài làm quen với cú pháp và ngôn ngữ lập trình mà mình đang học. Sẽ có bài toán để luyện tập các dạng câu lệnh cơ bản, các cấu trúc lệnh....)
- Các bài cơ bản tập trung để luyện tập kỹ năng lập trình như các bài toán số học, ma trận... cho đối tượng không chuyên tin học.
- Các bài toán cho đối tượng không chuyên tin học hoặc năm đầu của khối CNTT cần học ngôn ngữ lập trình, thử sức với các thuật toán cơ bản, không có đòi hỏi cao về các tình huống đặc biệt, test case...
- Các bài toán cho đối tượng sinh viên chuyên CNTT đòi hỏi các thử thách về thuật toán nâng cao, các tình huống cần (test case)...
- Lập trình viên hướng tới các bài toán phối hợp giữa các thuật toán, tối ưu, giải quyết một vấn đề phức tạp.
- Các bài toán cho đối tượng chuyên gia là các vấn đề thực tế, có độ phức tạp cao, cần tìm kiếm thuật toán và lời giải tối ưu.
2. Kiểu bài
Phân loại theo mục tiêu mà bài toán cần giải quyết. Tập trung vào các giải thuật cơ bản mà đề bài muốn hướng tới. Một bài toán có thể có vài tiêu chí khác nhau hoặc áp dụng nhiều giải thuật đồng thời.
Với các bài thử sức, thì có thể không có phân loại để người tham gia phải tìm hướng giải của mình.
3. ĐIểm số
Đánh giá độ khó của bài bằng điểm số mà người thực hiện sẽ đạt được khi giải thành công bài toán. Điểm số có thể được đánh giá chi tiết theo số lượng và chất lượng các testcase mà lời giải vượt qua được.
Cùng thuật toán nhưng tùy theo đối tượng tham gia mà có thể có các đề bài với bộ testcase khác nhau, từ đó dẫn đến các độ khó khác nhau và điểm số khác nhau.