Làm cách nào tôi có thể học được lập trình thi đấu (competitive coding) đây?

by admin

A: Raymond Deng, Cử nhân Kỹ thuật Máy tính, Đại học California, Santa Barbara (2021)

=======

Đây là lộ trình cơ bản để cải thiện những kỹ năng liên quan tới lập trình thi đấu của bạn này:

1. Hãy tìm ra một nội dung nào đó mà bạn không hiểu hoàn toàn (vd: quy hoạch động (dynamic programming), Thuật toán Kruskal, lan truyền cây phân đoạn lười nhác (lazy segment tree propogation), vv).

2. Hãy nghiên cứu để hiểu về ý tưởng cơ bản của khái niệm đấy. (Vd: các thuật toán tham lam: giải quyết các bài toán con bằng cách luôn luôn chọn những lựa chọn cục bộ tối ưu nhất).

3. Giải những bài toán trên các trang online judge (chấm điểm tự động trực tuyến).

4. Hãy lặp lại #3 tới khi bạn cảm thấy tự tin rằng mình có thể giải quyết được loại bài toán như thế.

5. Lặp lại từ 1 đến 4.

Một vài mẹo nè:

· Hãy luyện tập hằng ngày. Kỹ năng của bạn sẽ bị mai một nếu bạn gián đoạn vài ngày đấy.

· Hãy cố đừng dòm đáp án nhé. Khi đã dòm đáp án rồi thì, những vất vả để giải quyết bài toán đều sẽ tan biến. Song chính từ những vất vả đó bạn mới có thể tiến bộ được. Nếu chưa thể giải được ngay, hãy suy nghĩ về nó trong khoảng nửa giờ và rồi cố gắng thêm lần nữa vào ngày mai. Thử giải một bài dễ hơn xem.

· Nhiều cuốn sách có thể cung cấp một “tiến trình” hoàn chỉnh đấy. Competitive Programming do Steven và Felix Halim viết là cuốn khá nổi tiếng đấy. Tôi đã đọc xong bản đầu tiên và có thể xác nhận rằng cuốn sách đã giúp tôi rất nhiều.

Đây là một bức ảnh của thánh lập trình (Gennady Korotkevich), chúc bạn may mắn nhé!

Theo: Vũ Cường

You may also like

Leave a Comment