These tips were originally compiled by megatron10599

I recommend using C++ for competitive programming. You should learn about the C++ STL (Standard Template Library), get familiar with using it. You need not dive deep into the implementation details or semantics of the STL itself for the purpose of using it to implement algorithms.

To get going with the STL I recommend this topcoder tutorial (both parts). For C++ reference (function arguments, names etc….) I use cpprefernce or cplusplus.

You can refer the blogs mentioned at end in case you are still stuck wondering where to start from.

You should know about the containers in STL, functionality they offer and their corresponding time complexities. This is very much needed for implementing more involved algorithms. Implementing data structures like Red Black Trees isn’t a fun proposition, you’d much rather prefer std::set. Note that you do not need to know how the containers achieve these time complexities, they will be looked into later when we cover theses data structures or you learn it as part of your course work.

To learn C++ thoroughly and understand its features I recommend learncpp. Do note that this contains information way beyond what you shall need to use C++ in CP and is not necessary. This will give you enough knowledge to develop applications and libraries in C++. For Computer Science students, I do recommend going through the relevant parts of this tutorial. Note that this should be a work in progress assignment, the best way to learn programming is by doing, not reading. So do not get lost in this tutorial.

Here is an interesting blog for first and second year students (I did this in my first year summer vacation).

Here is a huge problem sheet by ahmedaly. I personally think solving these many problems isn’t needed. You can solve the purple labelled sections. The problems have video references linked (unfortunately in arabic), but the slides are in English. You will get a fairly good idea with the slides, you can then google for more resources on the same topic.

I had used a2oj ladders to be able to scale div2D and div2E in my second year. Although a2oj is now shut, you can still access the static version of the problem ladders.

Here is a gold mine of problems. I personally can vouch for the quality of graph problems in this collection. Its what I’ve solved to get better at graphs.

cp-algorithms is a good reference for learning a lot of algorithms and data structures.

Math advice

Long Challenges be cool

Useful Learning Resources for complex stuff (Might come in handy for 4/5 star rated students to upskill)

C++ STL Blog

Java Blog

NOTE :- I will edit this post to accommodate the answers to queries that you guys ask me personally. I will prefer if you ask your questions below so that we can make better use of this platform and I can respond better and transparently so that everyone can benefit from the interaction. Also responding to individual mails isn’t a very productive exerise.