The Debugging Method — Reproduce, Isolate, Verify
Contest debugging is a three-step loop; the smallest failing test is the whole game.
Ba bước
1. Tái lập nhỏ nhất. Thu nhỏ test xuống nhỏ nhất còn sai. Test nhỏ còn sai → logic sai; chỉ test lớn sai → khả năng cao là phức tạp/ tràn số.
2. Cô lập giả thuyết. Liệt kê 2–3 nghi phạm theo xác suất: ranh giới vòng lặp, khởi tạo, so sánh sai dấu, tràn int, modulo âm. In giá trị trung gian trên test nhỏ (debug output được phép — chấm chỉ nhìn stdout CUỐI cùng... thận trọng: một số judge cấm; dùng biến tạm và xóa trước khi nộp).
3. Kiểm chứng bản vá. Sau khi sửa, chạy lại TOÀN BỘ test ví dụ và tự dựng thêm test biên: n = 1, giá trị lớn nhất, sắp xếp ngược.
Nhận diện nhanh theo triệu chứng
| Triệu chứng | Nghi phạm chính | |---|---| | WA chỉ test lớn | tràn số, int thay long long | | WA test nhỏ | off-by-one, sai điều kiện | | TLE vừa phải | thuật toán đúng, phức tạp sai | | RE | mảng ngoài biên, đệ quy quá sâu | | WA số âm | modulo âm, init 0 cho best |
Điểm mấu chốt: thu nhỏ test trước; sửa rồi phải chạy lại toàn bộ, không chỉ test vừa fail.