Having had my hands in Competitive Programming for more than 2.5 years now, I consider myself credible enough for this thread.
Here is a list of suggestions and answers to commonly asked questions around Competitive Programming. Should be super helpful for beginners.
1/n
=> Where to start?
- Learn Basic Mathematics
- Learn a programming language
- Improve Typing Speed. 30+ WPM can be considered good enough for somebody just starting out.
2/n
=> Direct contests or DSA first?
- Personally, I'd suggest giving contests directly
- Simply up solving problems is the major key to learning new concepts and ideas in CP
- If you're preparing for placements and have less time, do DSA first and then only go for CP
3/n
=> Free learning resources
- YouTube channels : Errichto, CodeNCode, Kartik Arora, Utkarsh Gupta and of course Priyansh Agarwal (link in bio)
- Codeforces EDU section
- CP Algorithms, Geeks for Geeks blogs
- CSES Problemset
4/n
=> Paid learning resources
- TLE Eliminators CP course led by me
- Coding Ninjas
- Coding Blocks
- Unacademy
- I took the CN course 2 years ago which provided a kick-start to my CP Journey
5/n
=> Which websites to attempt contests on?
- Codeforces
- Codechef
- Atcoder
- Hackerearth
- Hackerrank
- Google Coding Competitions
- Leetcode [This is not a CP website. Yes you read that right. You can give contests on it to prepare for coding tests and interviews though]
6/n
Please note: There is no need to give contests on each and every website. Select 2-3 websites which seem good to you, and start following them regularly. Just make sure to give every single contest from those selected websites and you will be good to go.
7/n
=> Famous contests for beginners
- Google Kickstart
- Codeforces Rounds - Div3 rounds are the best for beginners
- Codechef Starters, Long Challenges
- Atcoder Beginner Contests
8/n
=> Famous contests for PROs
- Google CodeJam
- Facebook Hacker Cup
- CodeChef SnackDown
- Codenation Coding Tests
- Codeforces, CodeChef Div1 Rounds
- Atcoder Regular and Grand Contests
9/n
=> Contest attempting tips
- Take out time for the whole contest to maximise the output
- Don't give up before the contest ends
- Don't waste the entire time on one problem
- Always have a pen and paper handy
- If nothing works out, take a small break and start afresh
10/n
=> How to up solve a problem
- Try it with a fresh mind for an hour
- Read the editorial part by part, and see if anything clicks
- Still stuck? Discuss with your friends or seniors
- Saw a new topic? Learn that topic first
- After solving, always think about your learnings
11/n
=> How to practice problems?
- Don't solve a lot of easy problems
- Try problems of difficulty around 100 to 300 more than your current rating. Find ways to bring yourself out of your comfort zone
- Give virtual contests if there are no contests for a long time
12/n
=> How to overcome demotivation?
- Don't care about your rating. Yes, it is difficult but you'll have to develop that will-power somehow.
- Take a 1 or 2 day gap (always works)
- Stop looking at your rating graph for real
- Do not skip contests for any reason at all
13/n
=> Seeking help from experienced people
- Don't just say "Hi" and wait for a reply
- Explain your query in a paragraph or two
- Be polite. Don't spam, everyone is busy with their own lives
- Don't send random problems as queries, you'll most likely be ignored
14/n
Thank you for reading! Yes that was quite a lot. If you're still here, make sure you follow all the steps and suggestions in the above thread, to make sure you come out as the best version of yourself in the CP world! A good thing would be to save it to your notion.
• • •
Missing some Tweet in this thread? You can try to
force a refresh
Every year, around this time, the JEE exam frenzy kicks in. As I look back, I recall the tireless efforts made by my teachers.
I had 50+ students in my coaching classroom. Obviously the teacher couldn't have taught the topics according to just my strengths and weaknesses.
1/n
I was bullish about a few complex topics like Rotational Motion and Calculus. I wanted teachers to only solve hard problems in them but the teachers taught in a way that met the needs of most students instead of a single person. It was certainly not the best for me.
2/n
I always wonder what if I could have got a teacher who could have taught me as per my learning speed and strengths. Imagine, how beneficial that would be to so many students out there. This issue is solved right at its core by the concept of high-dosage tutoring.
3/n
A lot of people ask me what are the topics they should learn to reach 1600 rating on Codeforces.
Having spent over 2.5 years both practising and teaching Competitive Programming, here is my personal suggestive list of topics to cover to reach Expert on CF.
A thread🧵
1. Number Theory
- Modular Arithmetic
- Euclidean Algorithm
- Sieve of Eratosthenes
- Binary Exponentiation
- Matrix Multiplication
- Combinatorics
- Basic knowledge of Primes, Divisors, Multiples