Bỏ qua để đến nội dung

Lộ trình học - Bảng B (THCS)

Lộ trình dưới đây dành cho học sinh THCS ôn luyện Bảng B. Khác với Bảng A (chủ yếu Scratch), đề Bảng B là các bài toán chấm bằng input/output qua bàn phím, đòi hỏi viết code thật sự (Python hoặc C++) và tư duy giải thuật chắc hơn.

Giai đoạn 1 - Nền tảng Python (lớp 6-7, hoặc mới chuyển từ Scratch lên)

Phần tiêu đề “Giai đoạn 1 - Nền tảng Python (lớp 6-7, hoặc mới chuyển từ Scratch lên)”
  • Nắm vững cú pháp cơ bản: biến, kiểu dữ liệu (số nguyên, số thực, chuỗi), if/elif/else, vòng for/while, hàm input()/print().
  • Làm quen đọc dữ liệu vào theo đúng khuôn dạng đề bài (nhiều dòng, nhiều số trên một dòng) - đây là lỗi rất hay gặp ở học sinh mới chuyển từ Scratch.
  • Luyện các bài toán số học cơ bản: chia hết, ước số/bội số, số nguyên tố, xử lý từng chữ số của một số.
  • Bài tập gợi ý: xem Bài tập lập trình - Cơ bản của site trước khi bắt đầu luyện đề thi thật.

Giai đoạn 2 - Cấu trúc dữ liệu & thuật toán nền tảng (lớp 7-8)

Phần tiêu đề “Giai đoạn 2 - Cấu trúc dữ liệu & thuật toán nền tảng (lớp 7-8)”
  • Làm chủ danh sách (list/mảng): duyệt, tìm max/min, đếm theo điều kiện, sắp xếp.
  • Học các kỹ thuật thường gặp trong đề Bảng B: tham lam (greedy), tìm kiếm nhị phân (binary search), quy hoạch động (DP) ở mức cơ bản, công thức toán suy ra từ quy luật dãy số.
  • Luyện thói quen ước lượng độ phức tạp: nhìn giới hạn dữ liệu trong đề (n ≤ bao nhiêu) để đoán cách giải có kịp thời gian hay không, trước khi viết code.
  • Luyện đề thi Bảng B các năm trước trong mục Đề thi Bảng B
    • tự giải bằng Python trước, đối chiếu với lời giải mẫu, đặc biệt chú ý phần “Ràng buộc” (constraints) của từng bài để biết cách nào đủ nhanh.

Giai đoạn 3 - Chuyển sang C++ (lớp 8-9, hoặc chuẩn bị thi vòng cao hơn)

Phần tiêu đề “Giai đoạn 3 - Chuyển sang C++ (lớp 8-9, hoặc chuẩn bị thi vòng cao hơn)”

Nhiều bài Bảng B ở vòng chung kết/toàn quốc có ràng buộc dữ liệu lớn, cần tốc độ chạy nhanh hơn Python cung cấp - đây là lúc nên học thêm C++:

  • Cú pháp C++ cơ bản: kiểu dữ liệu, cin/cout, mảng, hàm.
  • “Dịch” lại các bài đã giải bằng Python sang C++ để quen cú pháp - thuật toán giữ nguyên, chỉ đổi ngôn ngữ viết.
  • Chú ý kiểu dữ liệu số lớn (long long thay vì int) - lỗi tràn số (overflow) là lỗi rất phổ biến khi mới chuyển từ Python (vốn không giới hạn độ lớn số nguyên) sang C++.
  • Tham khảo thêm chuyên mục C++ và CTDL & Giải thuật của site để học sâu hơn về cấu trúc dữ liệu và thuật toán.
  1. Đọc kỹ đề, đặc biệt phần Ràng buộc (constraints) - đây là gợi ý quan trọng nhất về độ phức tạp thuật toán cần dùng.
  2. Viết thử với ví dụ mẫu trong đề bằng tay hoặc giấy nháp trước khi gõ code, để chắc chắn hiểu đúng đề.
  3. Sau khi code xong, luôn thử lại với chính ví dụ mẫu trong đề trước khi coi là hoàn thành.
  4. Với các bài có nhiều nhóm test (subtask) theo ràng buộc tăng dần, có thể cân nhắc giải nhóm test nhỏ trước (thuật toán đơn giản hơn) để chắc ăn một phần điểm, rồi mới tối ưu tiếp cho nhóm test lớn.
  5. Ưu tiên hiểu vì sao lời giải đúng và vì sao nó đủ nhanh, hơn là chép lại code mẫu.