Đề Xuất Bài Tập

Cách đề xuất và xuất bản bài tập trên LQDOJ

Cảm ơn các bạn quan tâm đến việc đóng góp bài tập cho LQDOJ! Để đảm bảo chất lượng bài tập và giảm tải cho admin khi xét duyệt, chúng tôi đã cập nhật quy trình xuất bản bài. Bài đăng này sẽ hướng dẫn các bạn cách xin quyền đăng bài, tạo bài, và yêu cầu công khai bài.

1. Quy trình tổng quan

Trước đây các bạn gửi đề xuất qua ticket và admin tự tạo bài. Bây giờ, để giảm thiểu việc admin phải làm thủ công và để các bạn chủ động hơn, quy trình mới gồm 4 bước:

  1. Xin quyền tạo bài — liên hệ admin để xác nhận kinh nghiệm và bài muốn đăng.
  2. Tạo bài ở chế độ private — sau khi được cấp quyền, bạn tạo bài đầy đủ (đề, test, mã nguồn lời giải) ở chế độ riêng tư.
  3. Nhấn "Yêu cầu công khai" — hệ thống tự động chạy các bước kiểm tra chất lượng (xem mục 4 bên dưới).
  4. Trao đổi với admin — nếu có vấn đề, các bạn sửa và yêu cầu lại; admin sẽ duyệt khi mọi thứ ổn.

💡 Nếu bài bạn dùng cho một kỳ thi, bỏ qua bước 3 ở đây và làm theo hướng dẫn đề xuất kỳ thi — bot sẽ tự review luôn cả các bài bên trong khi bạn yêu cầu công khai kỳ thi.

2. Xin quyền tạo bài

Để được cấp quyền tạo bài, các bạn cần:

  • kinh nghiệm chuẩn bị đề thi (đã từng ra đề, biết cách hoặc có sẵn bộ test, v.v.).
  • một hoặc nhiều bài cụ thể muốn đăng lên LQDOJ — bao gồm cả đề, test, và lời giải.
  • Hiểu rõ format chuẩn bị bài: file test theo dạng .inp/.ans hoặc .in/.out, checker (nếu cần), validator (khuyến khích), v.v.

Liên hệ admin (tag cuom1999, anhkha2003, SPyofgame trong comment ở post này, hoặc gửi tin nhắn riêng) kèm bằng chứng kinh nghiệm hoặc danh sách/ý tưởng bài muốn đăng. Admin sẽ phản hồi sớm nhất có thể. Sau khi được cấp quyền, các bạn có thể tự tạo bài ở chế độ riêng tư, hoặc công khai trong nhóm qua đường dẫn Tạo bài mới.

3. Tạo bài ở chế độ private và chuẩn bị đầy đủ tài liệu

Trang quản lý bài có các tab: Content (đề), Test Data (test), Solution Codes (mã nguồn AC), Checker/Validator, Translate, Review (xem mục 4).

Cần chuẩn bị:

  • Đề bài — viết theo template ở mục 5 bên dưới.
  • Test data — file .zip chứa các cặp testN.inp/testN.ans, kèm init.yml nếu có subtask.
  • Solution Codes (mã nguồn lời giải) — đây là phần thay thế cho "Bài nộp tham chiếu" cũ. Ở tab Solution Codes, các bạn upload trực tiếp mã nguồn của các lời giải kèm expected_result (AC / TLE / WA / ...). Tối thiểu cần 1 lời giải main AC; khuyến khích thêm 1 brute_force (nếu có) và 1 lời giải cho mỗi subtask đối với đề OI. Mỗi lần auto-review, bot sẽ tự chấm lại các code này — không phụ thuộc submission cũ.
  • Checker / Validator (tùy bài) — nếu đề có nhiều đáp án hợp lệ, dùng checker custom; nếu đề số thực, dùng checker floats với sai số.
  • Bản dịch tiếng Anh (nếu có thể) — tab Translate.

4. Nhấn "Yêu cầu công khai" — hệ thống tự động xem xét

Khi tài liệu đã đủ, vào tab Content → nhấn nút Request Public (góc trên bên phải). Hệ thống sẽ tự động chạy 6 bước kiểm tra, mỗi bước có verdict riêng (Pass / Fail / Skipped):

# Kiểm tra Bot kiểm tra gì
1 Artifacts present Đề bài, test data, checker, ít nhất 1 Solution Code đã được upload đầy đủ.
2 Duplicate detection Bài không trùng lặp với các bài đã công khai trên LQDOJ (dùng semantic search).
3 Solutions rubric LLM phân tích mã nguồn các lời giải, đánh giá độ phức tạp, tính đúng đắn, và độ bao phủ subtask.
4 Checker correctness Checker phù hợp với đề (đề nhiều đáp án → checker custom; đề số thực → có sai số).
5 Time-limit headroom Lời giải main AC chạy dưới 80% giới hạn thời gian trên test khó nhất.
6 Validator runs clean Validator đã được cấu hình (khuyến khích để tránh test sai format).

Toàn bộ bước này thường mất khoảng 10–30 giây. Sau đó các bạn sẽ thấy kết quả tại trang Review (sidebar tab "Review" trên trang edit, hoặc đường dẫn /problem/<code>/review).

Trên trang Review, các bạn sẽ thấy:

  • Trạng thái tổng: "Tất cả kiểm tra đã qua" hoặc "X vấn đề cần xử lý".
  • Bảng chi tiết từng bước: lý do Pass/Fail kèm gợi ý sửa.
  • Phản hồi tổng hợp bởi AI: hướng dẫn ưu tiên các vấn đề cần sửa (chỉ hiện khi có Fail).
  • Khu vực bình luận: trao đổi với admin về bài. Hệ thống cũng đăng tin tự động khi admin chấp nhận/từ chối.

Trang tổng quan các bài đã review

Vào /problems/review/ (hoặc tab Xem xét ở sidebar trái của /problems) để xem tất cả các bài bạn đã từng yêu cầu review — kèm trạng thái auto-review, trạng thái yêu cầu công khai, và lần review gần nhất. Tiện theo dõi nhiều bài cùng lúc.

Khi nào admin sẽ duyệt

Admin sẽ nhận được thông báo SAU KHI bot chạy xong (không phải ngay khi bạn nhấn nút). Nếu bot báo Pass mọi check, admin chỉ cần xem xét nhanh rồi nhấn Approve. Nếu có Fail, các bạn sửa và nhấn yêu cầu lại — không cần admin can thiệp giữa các lần thử (có giới hạn 5 phút giữa các lần yêu cầu liên tiếp của cùng người, kèm đếm ngược trực quan trên nút).

Nếu lỡ nhấn "Yêu cầu công khai" sớm, có thể nhấn "Hủy yêu cầu" ngay bên cạnh để rút lại — yêu cầu sẽ biến mất khỏi hàng đợi admin.

5. Template Markdown cho đề bài

Đây là format khuyến nghị cho phần "Description" của bài:

Đề bài, ví dụ: tính tổng 3 số $a + b + c$.
**Yêu cầu**: tóm tắt lại ý chính đề bài muốn hỏi, trong trường hợp đề có cốt truyện dài.

#### Input

- Định nghĩa cấu trúc của input

#### Output

- Cấu trúc output

#### Example

!!! question "Test 1"
    ???+ "Input"
        ```sample
        1 2 3
        ```
    ???+ success "Output"
        ```sample
        6
        ```
    ??? warning "Note"
        Giải thích ví dụ

#### Scoring

- Subtask 1 ($10\%$ điểm): $1 \le a, b, c \le 100$
- Subtask 2 ($90\%$ điểm): $1 \le a, b, c \le 10^5$

6. Câu hỏi thường gặp

Tôi chỉ muốn đề xuất 1 bài, không muốn xin quyền tạo bài?
Vẫn được — tag admin trong post này hoặc gửi tin nhắn riêng kèm đề + test (hoặc link đề gốc nếu là đề HSG/đề thi chính thức). Admin sẽ tạo bài giúp bạn.

Bài tôi là đề HSG/đề thi chính thức?
Đăng tin liên hệ admin kèm hình ảnh đề và bộ test (nếu có). Admin sẽ tự tạo bài và kỳ thi cho bạn.

Tôi yêu cầu công khai nhưng bot báo Fail ở solutions_rubric — phải làm gì?
Vào trang edit, mở tab Solution Codes, thêm các lời giải còn thiếu (đặc biệt là main AC tối ưu và brute_force nếu có). Sau đó yêu cầu lại.

Tôi muốn xem các lời giải bot mong đợi?
Đề OI cần: 1 main AC + 1 brute_force (nếu có) + ít nhất 1 lời giải cho mỗi subtask khó. Đề ICPC cần: 1 main AC + 1 brute_force (khuyến khích, để kiểm chéo độ mạnh của test).

Bài của tôi đã có "Bài nộp tham chiếu" từ trước, có phải làm lại Solution Codes không?
Không. Tụi mình đã tự động chuyển dữ liệu — vào tab Solution Codes là thấy các lời giải đã được tạo sẵn từ submission tham chiếu cũ.

Bài tôi thuộc một kỳ thi, có cần nhấn "Yêu cầu công khai" trên bài không?
Không — nhấn trên trang Edit của kỳ thi, bot sẽ review luôn cả các bài bên trong. Xem Cách đề xuất kỳ thi trên LQDOJ.


Cảm ơn các bạn đã đóng góp! Mọi thắc mắc có thể bình luận bên dưới hoặc liên hệ trực tiếp admin.

Bình luận (243)

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