[Blog] Top websites for competitive programmers (P. 1)





Nhân tiện bạn mình vừa mới giới thiệu một trang web lập trình mà vừa truy cập vào đã làm mình rất ấn tượng, cho nên mình sẽ viết blog này để chia sẻ và viết review một list top các trang web mà cá nhân mình cho là hữu ích xD

Phần 1: Pratice Websites

#1 Codeforces
Nhắc đến những trang web để luyện tập không thể không kể đến Codeforces. Không lạ gì với những competitive programmers (CP) dù là lâu năm hay là mới chập chững bước vào thế giới này, đây là trang web (theo mình) lớn nhất trong giới competive programming. Codeforces là một trang web của Nga được thành lập và duy trì bởi một nhóm các CP dẫn đầu là Mikhail Mirzayanov.
Kết quả hình ảnh cho codeforces
Trang web này thường xuyên host những contest online kéo dài trong khoảng 3 tiếng, sau mỗi contest, bạn sẽ được nhận một giá trị điểm rating (có thể bị âm điểm nếu bạn làm không tốt), điểm rating này sẽ giúp bạn ghi danh ở các bậc xếp hạng được chia theo màu chữ handle. Nếu bạn được màu chữ là tím trở lên (rating từ 1900 trở lên) thì bạn sẽ được làm những contest mang độ khó cao hơn.
Vào trang chủ của Codeforces bạn sẽ có thể cập nhật ngay rằng đang có contest nào sắp diễn ra
Sơ đồ biểu thị độ biến thiên rating của bạn trong suốt quá trình làm các contest
(bảng rating lúc viết blog lúc này của mình hơi thấp xíu :< nhưng do là nhật ký của bản thân nên mình sẽ chân thật :>)
Ngoài ra bạn cũng có thể luyện tập trong phần Problemset và Gym, bài tập của Codeforces thì tất nhiên là hay nhưng mà độ nổi tiếng của trang web này phụ thuộc vào những contest online của nó.

#2 USA Computing Olympiad
Bạn có thể đi lòng vòng những Online Judge hay sưu tầm đề từ nhiều nguồn như SPOJ,... và tìm thấy câu chuyện về gã nông dân John và những con bò của anh ta, thì đấy chính xác là đề từ USACO. USACO là cuộc thi online thường niên của Mỹ, những học sinh trung học của Mỹ vào được vòng cuối sẽ được tham gia trại huấn luyện vào khoảng tháng 6 để lọc tìm đội tuyển IOI của Mỹ.
Giống như nhiều Online Judge có host các contest khác thì USACO cũng có chia các division cho phù hợp với nhiều trình độ, ví dụ như Codeforces thì chia Div. 1, Div. 2 và Div. 3, thì USACO chia làm 4 divisions: Platinum, Gold, Silver và Bronze.
Contest thường niên của USACO thường tổ chức vào 4 đợt, cách nhau khoảng 1 tháng và thường bắt đầu từ tháng 12 năm trước, mỗi contest kéo dài 3 ngày, trong 3 ngày đó bạn có thể thu xếp và bắt đầu làm contest vào bất kỳ lúc nào, một khi đã chọn bắt đầu contest thì bạn sẽ có 4 tiếng làm bài, nếu AC hết tất cả bài trong division hiện tại, bạn sẽ được thăng tiến ngay lập tức lên division tiếp theo và được tiếp tục chọn thời gian làm đề của division vừa thăng miễn sao còn trong 3 ngày diễn ra contest.
Đề USACO thì chất lượng miễn bàn, bạn có thể vào phần Contest để tìm đề của những contest đã qua để làm bài tập. Đề của USACO rất nhiều đề original và khác biệt với đề ở các chỗ khác do đó là một kho đề rất tốt để làm bài.


#3 oj.uz
Đây chính là trang web mà mình đã đề cập từ những dòng đầu tiên của blog. Mình khá ấn tượng vì giao diện rất thân thiện, màu sắc chủ động là xanh lá và trắng mang lại cảm giác rất relax khi làm bài, và đặc biệt là tốc độ judge cũng rất nhanh nữa. Nói về ấn tượng ban đầu của mình mà chưa vô vấn đề chính nhỉ =]] đây là một trang web của Hàn chỉ lưu giữ đề của những contest lớn trên toàn thế giới như là IOI, APIO, CEOI, COCI, JOI, Google Code Jam... (không có VOI :<). Đồng thời cung cấp cho bạn chỗ để submit bài làm của mình. Khối lượng đề tương đối lớn, tuy nhiên chỉ lưu giữ các đề thi nên không có phân loại theo tags, thích hợp để luyện tập cho cảm giác thi dưới áp lực thời gian. Cơ mà luyện tập bằng đề tầm cỡ quốc gia, quốc tế thì cũng khủng khiếp phết nhở =]]

#4 UVa Online Judge
Những ai thường xuyên cày bài từ quyển Competitive Programming 3 sẽ rất quen thuộc với trang web này. Kết hợp với quyển CP3, đây là kho bài tập khổng lồ và chi tiết. Tuy nhiên theo mình điểm trừ khá lớn là giao diện khá khó sử dụng và những submission của bản thân cũng không được coi lại.
Kết quả hình ảnh cho competitive programming 3
Quyển sách chia sẻ rất nhiều những kinh nghiệm, phương pháp thi đấu
Ngoài ra, những bài trên UVa bạn có thể debug code của mình bằng uDebug bằng cách nhập mã bài vào và trang web sẽ đưa ra một số test trick của đề, những test này do người dùng đóng góp. Thật ra uDebug cũng có thể dùng để debug những bài trên một số trang khác nhưng do mình không rành nên không đề cập đến :D
Để thuận tiện tìm bài trên UVa, có người còn lập ra một trang để tiện theo dõi status và tìm kiếm bài tập dễ hơn (tìm bài trên UVa tương đối rắc rối vì nó không có search tool). Và chúng ta có uHunt - UVa Hunting: "hunt problems that matter"

SPOJ là một web thân thuộc với nhiều bạn, cụ thể là qua trang tiếng Việt của nó - VNSPOJ và chủ yếu mình cũng làm bài trên đây. Tuy nhiên đề trên đây đã không còn được edit nữa (đang nói về VNSPOJ nhé, còn trang SPOJ của nước ngoài người ta xài bình thường thôi :v) mà đã chuyển sang VNOI. Điểm cộng lớn nhất ở đây chắc có lẽ là các đề đều là đề tiếng Việt nên rất tốt cho những ai lười đọc tiếng Anh :v
Giao diện trang chính của VNSPOJ
VNOI là một diễn đàn lớn của giới CP Việt Nam, trang web của VNOI rất dễ sử dụng.
Ở trang chủ là những thông báo, những bài blog trên diễn đàn
Phần đề bài được phân chia theo tags tương đối chi tiết, ngoài ra khi làm bài tập bạn cũng có điểm và được xếp hạng
Phần kỳ thi sẽ có một list các đề bài của các kỳ thi đã diễn ra, phần diễn đàn sẽ dẫn tới group VNOI trên facebook, nơi bạn có thể đặt câu hỏi và bàn luận các vấn đề liên quan.
Phần thư viện xin để lại cho bài viết sau nhé :D
Bây giờ nói một chút về những lý do tại sao mà rõ ràng giao diện và cách sử dụng của VNOI rất tốt nhưng mình lại rất tiếc, mình vẫn thích tạt vào VNSPOJ để làm bài hơn.
Điểm thứ nhất: do là đề bài thì được edit nội dung và hình ảnh minh họa các thứ trên VNOI, nhưng submit thì bạn vẫn cần phải submit trên VNSPOJ.
Điểm thứ hai: khi làm bài mà mình bí quá, mình có "sở thích" nghía qua phần comment dưới đề bài :v do dưới đó người ta có thể spoil hint, hoặc là giúp đỡ tại sao mình lại chỉ được bao nhiêu đó điểm, tuy là ít ai để ý tới phần này (hoặc đa số xuống đó để kiếm sol) nhưng mà phần comment đã một thời rất sôi nổi :'(. Tuy VNOI đã có thêm phần hướng dẫn cho một số đề bài luyện tập, nhưng mà như vậy thì cũng không khác gì việc coi sol dưới comment, mà đã một khi bạn muốn nghía sol rồi thì kiểu gì cũng coi được :v
Điểm thứ ba: đây có lẽ là điểm lớn nhất đối với mình :v VNOI không có bảng status!!! Nhưng trên VNSPOJ thì lại có, do đó khi mà mình lười tìm bài theo tags hoặc chỉ muốn làm bài chơi chơi thôi thì mình có thể ngồi ngó bảng status và nhìn xem có ai vừa mới submit một bài nào đó mình chưa làm bao giờ không :v và đôi khi cảm giác thanh niên đấm cả chục phát chưa AC mà mình vừa coi làm AC nó đã lắm bạn =]] tưởng tượng cảnh thanh niên kia đang đắm chìm trong vô vọng xD

#6 Free Contest
Sẽ thật là thiếu sót nếu không liệt kê một trang web host các contest rất chất lượng đến từ đội ngũ Kc97ble! Free Contest là một trang web host các contest online của Việt Nam với những bộ đề được sưu tầm chắt chiu từ nhóm các tình nguyện viên của Kc97ble dẫn đầu là anh Nguyễn Tiến Trung Kiên. Tần suất ra contest khoảng 1 tuần/ 1 lần và nếu bạn không có thời gian (hoặc đơn giản là quá lười) check mail hoặc là lên web để check thì đừng lo, vì Free Contest có page trên facebook luôn thường xuyên cập nhật và đăng thông báo lên page.

Đây là một trang web khá nổi tiếng, bài tập trong đây được phân chia rất chi tiết và có các mức độ từ dễ đến khó, từ cơ bản đến phức tạp, mới tập lập trình cũng xài được mà lão luyện cũng xài được.
Ngoài ra Hackerrank cũng phân chia các bài tập theo từng mục như là Problem Solving, các mục về ngôn ngữ như là C++, Python và mục luyện tập tổng hợp 30 days of code và tặng Badge chứng nhận cho từng mục. Hackerrank cũng có host contest, một số contest nổi tiếng có thể kể đến như là Hour Rank, Week of Code... tham gia contest và đạt được thứ hạng trong bao nhiêu phần trăm người tham gia bạn cũng được tặng huy chương. Tham gia contest và làm bài tập đều được rate trong 2 bảng xếp hạng riêng và cũng sử dụng màu chữ để phân biệt.
Mặc dù mình làm rất nhiều bài tập trên đây, nhưng mà mục đích chính của mình khi sử dụng trang này lại là để... mở contest :v Bạn có thể tạo problems và contests tùy ý bạn thích, còn Codeforces hình như cũng có như rất rối rắm, SPOJ cần hoàn thành 100 bài tập trên đó mới được mở chức năng này, một số trang khác có thể cũng có nhưng mình thấy hackerrank rất dễ sử dụng. Tuy nhiên phần này không liên quan đến ý chính bài viết do đó mình chỉ nói qua cho bạn tham khảo thôi.

Điểm thú vị của trang web này là mình được quyền chủ động đặt những thời gian nào mình có thể làm contest được, được quyền cho contest có rate hay không, những contest trong thời gian mình đặt sẽ được thông báo bằng mail và giờ nào cũng có contest. Từ những điểm thoải mái lựa chọn thời gian làm contest như thế này sẽ giúp mình dễ lên lịch hơn và dễ tập trung hơn. Tuy nhiên mình nhận xét là trang web hơi khó xài cho những người lần đầu tiếp cận nhưng có lẽ là sẽ dễ sử dụng hơn nếu xài lâu và quen.

Đây là trang web của Nha Trang University (NTU), list đề tiếng Việt, số lượng đề bài tương đối phong phú. Trang web này luyện tập khá là dễ chịu vì bạn có thể xem code người khác, xem test cases... Tuy nhiên là đã một thời gian dài mình không ghé vào trang này, vừa mới vào thì thấy thông báo khóa việc xem test sai lại và chuyển code người khác sang dạng hình ảnh để tránh sao chép :( Mình khá là buồn vì đây là web hiếm hoi dễ chịu trong việc luyện tập, cơ mà cũng vì lợi ích luyện tập nên chịu vậy :v
------------------------------------------------------------------------------------------------------------------------
Ngoài những trang web được list ở trên cũng có những trang web khác rất nổi tiếng như là Topcoder một thời oanh tạc trong giới CP nhưng đã bị Codeforces qua mặt từ năm 2013, Codechef với các contest nổi tiếng như là Snackdown và lượng đề rất phong phú, Hackerearth cung cấp kho bài khổng lồ được phân chia theo tags và hướng dẫn các thuật toán hết sức dễ hiểu... Tuy nhiên những trang web này mình không thường xuyên sử dụng nên xin phép không liệt kê ở trên.
Bài viết có thể chưa đưa ra được review đầy đủ nhất nhưng cũng đã cung cấp được những thông tin chính về các trang web, mong phần nào giúp đỡ các bạn trong việc tìm nơi luyện tập :v có thiếu sót hoặc câu hỏi nào có thể để lại dưới phần comment ♥

Nhận xét

  1. May quá hnay tìm được bài này giúp mình hiểu hơn về codeforce, nhưng mình có đôi điều muốn hỏi, điểm rating trên bảng hiện giờ mình có 1410 vậy nếu tham gia contest tiếp theo giải đúng 1 bài thì điểm được cộng vào 1410 này hay mỗi contest sẽ có 1 rating riêng rồi nó ghi lên biểu đồ theo từng contest, với cách tính rating thế nào? cảm ơn bạn nhiều

    Trả lờiXóa
    Trả lời
    1. Điểm của những contest có tính điểm sẽ được cộng vào rating của bạn, tức là được cộng vào 1410 của bạn chứ không có vụ rating riêng đâu nghen. Cách tính rating chi tiết bạn nên coi trực tiếp ở Codeforces, tuy nhiên có thể hiểu nôm na là nếu bạn làm bài tốt hơn rating của bạn hiện tại thì sẽ được cộng rất cao, và ngược lại nếu bạn làm bài tệ so với mức rating hiện thời thì hệ thống sẽ trừ điểm bạn.

      Sorry nếu câu trả lời này quá trễ, do mình cũng tạm ngưng việc viết blog trong mấy năm trở lại đây rồi nên cũng thường xuyên check. Anyway cảm ơn bạn đã theo dõi những gì mình chia sẻ nghennn =]]

      Xóa

Đăng nhận xét

Bài đăng phổ biến