Cách đề xuất và xuất bản kỳ thi trên LQDOJ
Cảm ơn các bạn quan tâm đến việc đóng góp kỳ thi cho LQDOJ! Trước đây quy trình đề xuất kỳ thi đi qua đội ngũ coordinator — nay đã được thay bằng hệ thống auto-review tự động, giúp các bạn chủ động hơn và admin xét duyệt nhanh hơn. Bài đăng này hướng dẫn quy trình mới đầy đủ từ A đến Z.
1. Quy trình tổng quan
Quy trình mới gồm 5 bước:
- Xin quyền tạo bài (nếu chưa có) — chi tiết ở Cách đề xuất và xuất bản bài tập trên LQDOJ.
- Tạo các bài tập ở chế độ private — chuẩn bị đầy đủ đề, test, Solution Codes cho từng bài.
- Tạo kỳ thi ở chế độ private — thêm các bài đã chuẩn bị vào kỳ thi.
- Nhấn "Yêu cầu công khai" trên trang Edit của kỳ thi — bot tự động review cả kỳ thi và mọi bài bên trong trong một lượt.
- Trao đổi với admin ở khu vực bình luận trang Review, sửa và yêu cầu lại nếu cần.
Quan trọng: không cần nhấn "Yêu cầu công khai" trên từng bài lẻ trước. Khi bạn yêu cầu công khai kỳ thi, bot sẽ tự kích hoạt review cho mọi bài chưa được review.
2. Chuẩn bị các bài tập
Mỗi bài trong kỳ thi cần:
- Đề bài đầy đủ, viết theo template chuẩn (xem hướng dẫn bài tập mục 5).
- Test data đầy đủ (subtask nếu là đề OI).
- Solution Codes — ít nhất 1 main AC, khuyến khích thêm brute_force + lời giải cho từng subtask.
- Checker / Validator phù hợp với đề.
Số bài và độ khó:
- Định hướng chung: ít nhất 1/3 bài có thể làm được với kiến thức THCS, 1/3 bài kiến thức THPT, còn lại thì tự do.
- Các bài không được trùng lặp ý tưởng với bài đã có trên LQDOJ, Codeforces, AtCoder, SPOJ, hoặc các nguồn nổi tiếng khác. Bot có check trùng lặp nhưng admin vẫn có thể yêu cầu bạn thay bài nếu phát hiện trùng ý tưởng.
3. Tạo kỳ thi và thêm bài
Vào Tạo kỳ thi mới. Trên trang Edit:
- Thông tin chung: tên, key, mô tả, thời gian bắt đầu/kết thúc, format (
default/ioi/icpc/ ...). - Authors / Curators / Testers: thêm các thành viên đội ngũ chuẩn bị. Quan trọng — họ sẽ được bot tin tưởng (không bị flag rò rỉ đề khi nộp bài).
- Problems & Quizzes: thêm các bài đã chuẩn bị ở bước 2 vào, theo thứ tự độ khó tăng dần (A, B, C, D, E, ...).
- Organizations (nếu là contest nội bộ trong một nhóm).
Sau khi điền đầy đủ, nhấn Save.
4. Nhấn "Yêu cầu công khai" trên trang Edit của kỳ thi
Sau khi save, trên trang Edit của kỳ thi private, bạn sẽ thấy nút "Yêu cầu công khai" kế bên nút Save. Nhấn vào.
Hệ thống sẽ tự động chạy:
| Kiểm tra | Bot kiểm tra gì |
|---|---|
| Problems reviewed | Mọi bài tập trong kỳ thi đều đã được auto-review và đã Pass. Bài nào chưa review thì bot tự kích hoạt review cho bài đó. |
| Submission leak check | Phát hiện rò rỉ đề — có người không thuộc đội ngũ (không phải author/curator/tester của kỳ thi, không phải admin) đã nộp bài hoặc có role tham gia trên các bài của kỳ thi. |
Toàn bộ quá trình mất khoảng 30 giây đến 2 phút tùy số bài trong kỳ thi (bài chưa review sẽ review song song). Kết quả hiện ở trang /contest/<key>/review.
Trên trang Review, các bạn sẽ thấy:
- Trạng thái tổng của kỳ thi: Pass / Fail / Running / Error.
- Bảng từng bài với verdict riêng — bài nào Pass, bài nào còn vấn đề.
- Danh sách rò rỉ đề (nếu có) — username + bài bị rò rỉ + lý do.
- Phản hồi tổng hợp bởi AI khi có Fail.
- Khu vực bình luận để trao đổi với admin.
Trang tổng quan các kỳ thi đã review
Vào /contests/review/ (hoặc tab Xem xét ở sidebar trái của /contests) để xem tất cả các kỳ thi bạn đã từng yêu cầu review — kèm trạng thái và lần review gần nhất.
Khi nào admin sẽ duyệt và tổ chức
Admin nhận thông báo SAU KHI bot Pass. Sau đó:
- Admin xem trang Review để confirm bot không bỏ sót gì.
- Nếu Approve, bạn hãy liên hệ admin để admin duyệt đề. Admin có thể yêu cầu bạn đổi bài nếu thấy đề phân bố không chuẩn như yêu cầu ở trên.
- Nếu Reject, lý do được ghi vào feedback — bạn sửa và nhấn yêu cầu lại.
Có giới hạn 5 phút giữa hai lần yêu cầu liên tiếp của cùng người. Nếu lỡ tay nhấn sớm, dùng nút "Hủy yêu cầu" kế bên để rút lại.
5. Một vài lưu ý cho người tổ chức contest
- Chuẩn bị Solution Codes nghiêm túc — bot dùng các code này để check time limit, độ phức tạp, độ phủ subtask. Thiếu hoặc kém chất lượng → bài bị Fail review → contest bị block.
- Đội ngũ chuẩn bị (authors / curators / testers) = người được tin tưởng. Nộp bài trước contest bằng tài khoản ngoài đội ngũ → bot sẽ flag rò rỉ.
- Đừng share đề với bạn bè trước khi contest công khai — họ sẽ nộp bài và bị bot phát hiện. Nếu cần test thử, thêm họ vào testers của kỳ thi trước.
- Test kỹ độ khó tăng dần — bot không thay bạn đánh giá việc này, chỉ admin có thể.
6. Quyền lợi và trách nhiệm
Theo quy ước cũ, vẫn giữ một số nguyên tắc:
- Admin có quyết định cuối cùng về việc một bài / kỳ thi có được công khai hay không, dựa trên kết quả auto-review và đánh giá thủ công.
- Admin có thể yêu cầu các bạn thay bài hoặc điều chỉnh kỳ thi dù bot đã Pass — vì bot không kiểm được mọi thứ (tính sáng tạo, độ phù hợp cộng đồng, v.v.).
- Các bạn có quyền yêu cầu admin đưa ra lý do cụ thể nếu một bài / kỳ thi bị reject.
- Mọi kỳ thi không được tổ chức bởi admin đều phải qua quy trình này — không ngoại lệ.
- Trong khi trao đổi, mọi người tôn trọng lẫn nhau ở cả phần bình luận và tin nhắn riêng.
7. Câu hỏi thường gặp
Tôi muốn tổ chức contest cá nhân (private) cho lớp / nhóm bạn — có cần nhấn "Yêu cầu công khai" không?
Không. Contest private dùng trong tổ chức / nhóm thì không cần qua auto-review. Quy trình này chỉ áp dụng cho contest muốn công khai cho cộng đồng LQDOJ.
Tôi đã tạo các bài độc lập trước đó, giờ muốn gộp vào một contest mới — có phải tạo lại không?
Không. Thêm các bài hiện có vào contest, rồi nhấn "Yêu cầu công khai" trên contest. Bot sẽ thấy bài nào đã review thì dùng kết quả cũ, bài nào chưa thì kích hoạt review.
Bot báo "rò rỉ đề" — có cách nào loại trừ false positive không?
- Người trong đội ngũ chuẩn bị → thêm họ vào authors / curators / testers của kỳ thi. Bot sẽ tin tưởng.
- Admin → tự động được tin tưởng, không cần thêm.
- Người ngoài đã nộp bài → đây là rò rỉ thực sự, phải xử lý: hoặc thay bài, hoặc xóa các submission đó (nếu hợp lý), hoặc thảo luận với admin về việc chấp nhận rủi ro.
Bao lâu admin sẽ duyệt sau khi bot Pass?
Tùy hàng đợi. Với lượng đề xuất hiện tại, ưu tiên kỳ thi nào Pass trước, chuẩn bị kỹ trước. Tụi mình không cam kết ngày tổ chức cụ thể theo yêu cầu — admin cần thời gian xét duyệt và sắp lịch.
Tôi đã gửi đề xuất qua coordinator / ticket cũ trước đây và đang chờ — phải làm gì?
Quy trình cũ đã ngừng. Vui lòng làm theo các bước trong bài này: tạo contest private, thêm bài, nhấn "Yêu cầu công khai". Các ticket cũ sẽ được tụi mình đóng dần, kèm hướng dẫn chuyển sang quy trình mới.
Hãy cùng hướng đến một LQDOJ chuyên nghiệp và thu hút hơn với các kỳ thi chất lượng. Cảm ơn các bạn đã đóng góp! Mọi thắc mắc bình luận bên dưới hoặc liên hệ admin trực tiếp.
Bình luận (47)