01/10/2018, 00:38
AMA Session: Hỏi nghiệm thi Competitive Programming của Nguyễn Xuân Phúc
- Tên: Nguyễn Xuân Phúc
- nickname: nxphuc
About me:
- Có kinh nghiệm thi HSG Quốc Gia, OLP SV Toàn quốc và ACM regional
- Mình sẽ chia sẻ kinh nghiệm chuẩn bị và thi Competive Programming và các chủ đề liên quan đến Competive Programming. Các bạn đặt câu hỏi và Phúc sẽ sắp xếp trả lời vào cuối tuần.
Why AMA?
- Do anh Đạt aka @ltd đề xuất
Bài liên quan
Cảm ơn Phúc đã đồng ý chia sẻ kiến thức, kinh nghiệm chuẩn bị và thi Competitive Programming với DayNhauHoc.
Mọi người đặt câu hỏi ở bên dưới nhé, mỗi câu hỏi là một reply riêng. Nếu thấy câu hỏi nào mình thích thì like, đừng đặt câu hỏi trùng. Đạt sẽ kiểm tra trùng và gộp câu hỏi, nếu có. Và sẽ tách nhiều câu hỏi ra, mỗi câu hỏi một reply, nếu được.
Mọi người giúp chia sẻ topic này lên mạng xã hội, email, người quen để có nhiều câu hỏi hơn về lĩnh vực này
tài liệu để rèn luyện khi tham gia competitive programming bạn dùng gồm những cuốn nào nhỉ ?
Competive Programming có lợi gì khi xin việc không?
Khi đi thi Competive Programming thì chúng ta cần chuẩn bị những điều gì?
Anh cho em hỏi là mình luyện & học giải thuật tới 1 mức nào đó rồi dừng để học những cái khác (như OOP, công nghệ mobile, web, …) hay luôn tìm hiểu giải thuật anh ?
Và nhưng nơi / địa điểm / website / sách uy tín mình có thể luyện giải thuật ạ ? Ngoài Cuốn Giải thuật & Lập trình của thầy Lê Minh Hoàng ra !
Một điều nữa là: Không biết mình có nên thi mấy cuộc thi HSG tin lớp 9, cấp 3, … không ạ ? Thuật toán của em cũng khá ổn, không đến nỗi tệ, nhưng em không muốn học Pascal vì phần lớn nghe người ta nói học dư thừa và không thực tế, và vì thế nên em sẽ không thi HSG tin 9 được vì phải biết Pascal. Còn cấp 3 thì hình như cho dùng C++ nên có thể sẽ ok. Anh nghĩ sao về vấn đề này ?
Em cảm ơn
Em lớp 11, năm nay thi tỉnh, năm sau mục tiêu thi QG. Hiện tại đang làm các bài trên laptrinh.ntu.edu.vn.
Em có đọc cuống giải thuật và lập trình của thầy LÊ MINH HOÀNG nhưng không hiểu code pascal @@.
Cho em hỏi có cuốn nào code bằng c++ mà hay không nhỉ :3
Trước tiên là xin cám ơn mọi người đã chú ý đến session này và hy vọng mọi người sẽ có hung thú với nó và đặc biệt cám ơn anh @ltd đã cho em lên thớt
Cũng cho mình xin lỗi vì thời gian này đang bận nhiều việc nên mấy ngày nay không onl và trả lời các bạn sớm được . Mong các bạn thông cảm.
Mình bắt đầu học về thuật toán, về CP từ hồi cấp 3 (một số hay gọi là luyện gà đá ấy), thì lúc đó tài liệu gối đầu giường của mình và cũng hầu hết tất cả các bạn khác lúc đó là “Giải thuật và lập trình” của thầy Lê Minh Hoàng, và bộ “Tài lieu giáo khoa chuyên tin” (gồm 3 quyển lý thuyết và thêm các quyển bài tập). Ngoài ra thì còn một số tài lieu chuyên đề nhưng cũng không đáng chú ý lắm.
Thì những tài liệu trên đủ cung cấp một kiến thức nền tang khá đủ, nhưng mà một nội dung hầu hết các tài lieu đều ít nói đến là cấu trúc dữ liệu và toán học, thì phần này tụi mình được các thầy cô dạy trực tiếp, đồng thời là tự tìm hiểu thêm các tutorial, các slide về các chuyên đề này trên mạng một số nguồn khá chất lượng là Codeforces, Topcoder, VNOI, geeksforgeeks,… còn về sách tiếng anh thì mình cũng chưa đọc nhiều cuốn về CP, chỉ mới đọc hết bộ Competitive Programming của Steven Halim (coach của team ACM ICCP và SG IOI, giảng viên ĐHQG Singapore NUS), các cuốn khác thì cũng có đọc nhưng chỉ đọc những phần mình cần tìm hiểu thôi chứ chưa đọc hết.
Thứ nhất là về Competitive Programming (mình sẽ gọi tắt là CP) có lợi gì? Đây là một câu hỏi mà rất nhiều người đã từng đặt ra và cũng rất nhiều người đã/đang là 1 CP-er tự thắc mắc mà không tìm ra câu trả lời Và ngay trong diễn đàn diễn đàn cũng đã có những topic thảo luận rất sôi nổi về nó Tại sao phải học thuật toán? mình xin tóm lượt một số ý của mình (cũng có nhiều ý đã được mọi người nói đến trong topic trên):
Còn câu hỏi thứ hai, cần gì khi đi thi CP, thì đương nhiên là kiến thức rồi, ngoài ra thì cũng phải luyện tập rât nhiều, không có thành công nào mà không bắt nguồn tự sự tập luyện, tiếp theo là tâm lý, tâm lý càng thoải mái thì áp lực càng ít, khả năng tập trung càng cao.
Thuật toán và ứng dung luôn song hành với nhau
Câu hỏi thứ hai, những “địa chỉ” của dân luyện giải thuật thì khá phổ biến: spoj, vnoi, codeforces, topcoder, hackerrank, codechef, … hay một số OJ “lai”, vừa luyện tư duy giải thuật vừ luyện các câu hỏi mà các công ty công nghệ lớn có thể hoặc đã dùng để interview là interviewbit và leetcode.
Câu hỏi thứ ba, theo anh thì lớp 9 chưa nên đặt nặng vấn đề thi thố, nếu các em nhỏ có sở thích thì nên tạo điều kiện để các em tìm hiểu, đừng ép buộc theo kiểu luyện gà nòi. Cấp 3 hiện tại thì thi HSG QG đã cho phép dung C/C++ (hsg cấp tỉnh thì tùy từng tỉnh, anh không dám chắc) nên có thể bỏ qua Pascal để tìm hiểu ngay luôn C/C++, nhưng vẫn khuyên là nên biết pascal để đọc các tài liệu, vì tài liệu tiếng Việt cho học sinh THPT hiện nay hầu hết đều là pascal, thực tế thì cú pháp của nó không có rắc rối, chỉ tốn 1-2 tuần là có thể đọc hiểu được rồi. Nhưng con đường CNTT ở cấp 3 không chỉ có thi HSG, mà còn cả các kì thi về kỹ thuật, nó thực tế, thực dung hơn và rất thích hợp cho đa số mọi người: mức tư duy vừa đủ, khả năng tìm tòi học hỏi vùa đủ, thỏa mã sức tư duy sang tạo, … chứ không nặng lý thuyết như thi HSG, như vậy thì dễ tạo được sự đam mê cho các bạn
Sách về thuật toán sử dụng bằng C++ mà viết tiếng Việt ở VN mình thì hơi bị hiếm, nhưng mà anh nghĩ em nên tìm hiểu sơ về pascal, không phải để dùng, mà là để đọc hiểu, vì hầu hết các tài liệu, thậm chí là các lời giải mẫu của các bạn, các anh chị từng thi HSG QG chia sẻ trên các diễn đàn, các blog đều dung pascal rất nhiều.
Ngoài ra việc em làm các bài trên laptrinh.ntu.edu.vn là không đủ, chắc chắc không đủ, em cần phải luyện tập thêm nhiều ở các trang có tính truyền thống hơn và chuyên về CP hơn như vnoi, codeforces, USACO (trang thi của mỹ, cũng như HSG QG của VN), COCI, hay đặc biệt là các free contest của Nguyễn Tiến Trung Kiên, nó sẽ giúp em cọ xát hơn, tích lũy nhiều kinh nghiệm và quen với mức độ ra đề thực tế hơn.
Anh ơi cho em hỏi , em không học chuyên cơ mà em rất muốn thi vào năm sau, việc tự học tài liệu chuyên tin của em hiện tại rất khó khăn vì có những từ ngữ em không hiểu nổi , ( ví dụ như kí hiệu toán học ô lớn trông đánh giá độ phức tạp của thuật toán ) , hoặc có những bài họ giải quá hay, em không thể hiểu được cách thuật toán nó hoạt động và cũng không hiểu sao người ta nghĩ được vậy ? Thấy anh có đề cập về các kì thi kỹ thuật , anh có thể mách nước cho em được không ạ ? Em biết rất ít thông tin về những cuộc thi như vậy ? Em cảm ơn anh trước ạ
Thưa anh, hiện em đang tự học thuật toán nhưng cảm thấy tiến độ rất chậm,hầu như sau mỗi ngày đều không đáng kể gì rõ rệt, cho em hỏi lúc trước anh có từng gặp tình trạng như vậy không, và anh đã khắc phục như thế nào, em cảm ơn ạ
btw, AMA nghĩa là gì ạ :v
Anh ơi em muốn hỏi thi ACM ở ĐH như thế nào ạ? Em “tạch” tuyển QG và em đã bỏ CP khoảng 2 tháng rồi ạ, nhưng mà em vẫn muốn thi ACM :’(
AMA = Ask Me Anything =)))
Trước tiên xin lỗi tất cả mọi người vì 1 tháng vừa rồi mình bận khá nhiều việc và cũng như tập trung ôn thi nên không có onl trên diễn đàn được. Nên giờ mới có thể trả lời cho mọi người được.
Cái này thì a cũng không rõ nữa em, vì thời anh học cấp 3, nó chưa phổ biến như bây giờ, anh không tham gia nên cũng không nắm rõ hình thức của nó.
em thử liên hệ hỏi thử một số giáo viên trong trường, hoặc là một số kì thi lớn thì có website riêng, em có thể tìm hiểu thử xem nhé.
Đó là chuyện bình thường em à, không có gì phải lo lắng cả
Thậm chí có những kiến thức, những thuật toán, cấu trúc mà mất hàng tuần thậm chí gần cả tháng để lĩnh hội hết được. Bản chất thì luyện thuật toán cũng như luyện nội công, không thể nào 1 sớm 1 chiều được.
Cứ tiếp tục try hard. Không phải là mình học nó trong vài tháng 1 năm, mà là suốt một thời gian dài. Chỉ cần đi đúng tiến độ, đúng lộ trình mình đặt ra là được. Cố gắng tham gia các diễn đàn thuật toán của VN như VNOI để học hỏi thêm nhé. Giao lưu càng nhiều thì càng tốt.
“Muốn đi nhanh, hãy đi một mình. Muốn đi xa, hãy đi cùng nhau”
Anh không biết em (sẽ) học trường nào nên không nói rõ được, vì mỗi trường có một cách tuyển quân và chuẩn bị cho mùa ACM khác nhau. Anh chỉ nói những cái chung và kèm theo vài lời khuyên nếu em chưa có kinh nghiệm thi ACM