How to become an Expert on Codeforces | Tips and Topics for each Rating from Newbie to Specialist

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
hi everyone welcome back to the channel my name is priyan Agarwal and in this video I am going to give you a complete road map to go from newb on code forces to expert 90% people in India today are less than 1300 rated on code forces now that's a very very shocking number because this tells us that so many people in India are trying out competitive programming they're getting started with it but very very few people are actually getting to a good enough level and a good enough level in competitive programming is actually something like an expert so in this video I going to go in a specific order first of all I will talk about what should you do if you're a newbie then what should you do if you're a pupil and then what should you do if you're a specialist on good forces right so I will not be just talking about the topics that you should learn I will also be giving you tips along the way that if you are in this rating range what are certain tips for you so just watch every single minute of this video very very attentively make notes of it if you want to so let's get started by talking about what should you do if you're a newb on code forces so first of all you should Master a programming language okay become very very good at one programming language but in that one programming language you should be so good that if a logic comes in your mind and if you want to code it out you should be able to implement 90% stuff on your own and 10% of it you are allowed to Google next you should learn about time and space complexity because see if you talk about data structures algorithms and if you talk about competitive programming the most important thing is not just writing the code but writing an efficient code how do you judge this efficiency you judge the efficiency of your code through time and space complexity next you should learn about you know inbit Stu stuff in your programming language for example if you look at C++ there is this thing known as C++ STL standard template library now standard template Library contains a bunch of functions that you know help you implement some stuff very very quickly similarly for programming languages like Java python there are their own resources now once you've mastered a programming language you know how to judge the efficiency of your code and you also know some important inbuilt functions in your programming language this is the point where you start focusing on maths now for the subtopics for maths I would recommend you to learn about basic high school level math concepts like you know hcf LCM primes divisors multiples right you should also refer to this very important topic of modular arithmetic after you done learning these basic math concepts right what you should do is that you should Master this one concept which is known as recursion okay recursion is one concept that is going to be used in a lot of topics as you go forward so this is the entire set of topics that you should learn as a newb again a lot of importance on recursion and a lot of importance on building the fundamentals right now let me also give you three important tips if you're a newb on code forces the very first thing is that don't run after topics there is no need for you right now to learn Advanced topics like greedy dynamic programming graphs trees all of these there will be a time when you will get to learn all of these topics the second tip is that you know you should focus a lot on building your implementation skills like if there is a logic that is coming into your mind you should be able to implement it easily right and the third tip is that you know don't get disheartened at this moment I understand that when you're starting your competitive programming Journey you will see that everyone around you is doing so well while you are stuck at this newb rating range and you're not able to progress but that's absolutely fine okay right now just focus on building your fundamentals and once you're done doing that you will see that when you are attempting quod forces contest you will be able to solve problems right and you will be able to get to a pupil range very very soon now let's talk about what are the topics that you should learn if you're a pupil on code forces if your rating on code forces is greater than 1,00 the very first most important topic right now is binary search Advanced why am I saying binary search Advanced and not just simple binary search because this topic also involves binary searching on answer like you will see that your answer in certain problems are having a monotonic function right you can study about all of these topics if you don't know about them right now just note it down monotonic functions right but this is one topic that you should absolutely Master right you should spend a lot of time on this solve a lot of problems even if you solve 50 problems on binary search Advan it is going to be absolutely worth it the next topic that you should look at is number Theory now while you were a newb on code forces you would have learned the basic concepts like primes divisors all of these things but at this point you need to level up a bit when you're pupil on code forces you should focus on topics like C of eratosthenes ukan algorithm these two topics are very very important and you will see that there are so many problems which are just simple variations of ukan algorithm and C fosis so make sure you master these topics the next topic that you should Master is prefix sums now I know prefix sums looks like a very easy topic but let me tell you there are so many variations of prefix sums there are so many variations where you know you have to use a C++ standard template Library function or a C++ STL data structure in order to optimize your prefix some queries so make sure you solve a lot of variations on prefix sums just knowing the basics of prefix sums is not enough try and find a lot of problems which involve variations of this after you're done mastering prefix sums the next topic that you should look at is greedy algorithms again absolutely very important okay because if you talk about competitive programming it is not just about applying standard data structure standard algorithms into problems a lot of problems are going to be based on Grey ideas and this is also going to help you in contest when you look at the second problem or even the third problem in most Cod forces contest a lot of them are based on greedy ideas now in terms of greedy algorithms there are two things that you need to focus on first is mastering all the standard greedy algorithms okay there are going to be a list of standard greedy ideas I can even you know share some resources in the description of this video you can look at all those algorithms and master them these are all standard greedy algorithms other than that you also need to solve a lot of non-standard greedy algorithmic problems basically you go on to code forces you know you put the tag of greedy and you solve any random problem in that problem you might require a standard greedy idea or you might have to think about a greedy idea on spot right the next topic that you should Master if you are either a higher pupil or almost a specialist on code forces is bit manipulation now I have personally created a video around bit manipulation tricks on the YouTube channel of T eliminators so you should check it out it contains around 10 very very important bit manipulation techniques right so make sure you check that out and that would help you open up your mind about bit manipulation now let me also give you three important tips if you're a pupil on code forces firstly is to get into the habit of solving ad hoc problems What are adhoc problems these are problems which don't require a specific topic but only a logical you know mind like just looking at a random problem you realize that okay it can be logically solved like this but it does not really involve a particular idea or a particular you know data structure or an algorithm so these are adog problems get into the habit of solving these random problems okay the second tip is to get into the habit of absolving contest what is the meaning of absolving basically whenever you attempt a contest after that you look at those problems which you weren't able to solve and you try to figure out the solution either you do that on your own or you look at the solution of those problems and try to learn the concepts which are being used in these problems the third tip that I'm going to give you is to you know give enough contexts like at this moment I can understand that it gets a little overwhelming that you're learning so many topics but make sure that you're not just learning you're giving enough contest and you're applying those learned Concepts in contest problems right because just learning a topic is not enough you need to solve problems on it and you need to solve problems on those topics within contest now in case you are somebody who requires some support in order to learn all of these topics in a structured manner then let me tell you about my course called tle eliminators that I've been running from April 2021 so it's been 3 years since I've been running that course we have taught more than 5500 programmers through that course already now this entire course you know is divided into four levels so for somebody who is at a particular level in their competitive programming Journey they can choose to join a level and learn only those relevant topics so first of all you get live classes on all of these topics right every single week we have around one to two live Theory classes and we teach you all of these Topics in a very structured manner secondly we provide you with curated practice problems on all of these topics that we've taught you for example if I teach you dynamic programming for maybe 3 weeks then in these three weeks I am going to give you two to three problems every single day now in case you're stuck on any practice problem from the course you get dedicated video solution where we talk about the exact intuition involved how do you think apart from this if you're stuck on any practice problem from or outside the course we provide you with instant doubt support now what happens in doubt support is that we have a team of around 30 to 40 experienced competitive programming mentors these mentors are already experts and candidate Masters on code forces and they help you solve these problems in which you stuck like you could come up with a debugging problem you could come up with a problem in which you require some hints and overall you know you get to learn a lot from the experience of these mentors and apart from that there are other pretty cool features uh you know you can go and check out our website to explore them uh one thing that I want to mention is that tle eliminators is a live course right so every 3 months we launch one single batch and in one single batch we run all of these level 1 2 3 4 parall so you know you can go on to our website and check out when is the next course coming up and if you're interested you can sign up for that let's talk about what should you do if you're a specialist on code forces now first of all before I talk about all the topics that you should learn let me congratulate you if you've become a specialist on code forces it means that you've already beaten 90% people in India okay now that's a big number because what this means is that if you were just targeting competitive programming for probably placements or internships if you're going to sit in an online coding test you are going to perform better than 90% people in India the very first topic that you should learn as a specialist is two pointers and and sliding windows so two pointers is one technique you know that can help you optimize a lot of your binary searching ideas like most of the binary searching problems that you solve on arrays and subarrays you will see that they can be converted into two pointers and they can be further optimized the next topic that you should learn is Advanced number Theory now if you've become a specialist I am assuming that you already know the basics of number Theory you know Concepts like modular arithmetic a bit about ukan algorithm a bit about primes devisers C fosies this is the point where you learn about FMA theorem Oilers theorem right you also learn about Advanced things like finding modular inverse and this is also the point where you focus a lot on combinatorics because going forward when you look at the third problem or the fourth problem in code forces contest a lot of problems are based on combinatorics the next topic which is the most important in competitive programming after binary search is dynamic programming okay this is one topic that you should Master you cannot call yourself a competitive programmer if you're not good at dynamic programming because I can tell you that you know if you're solving a random problem on code forces the chances that it is based on a dynamic programming idea are insanely High okay and if you're a specialist on code forces don't expect yourself to become an expert if you cannot Master dynamic programming so spend a lot of time on dynamic programming make sure you solve you know at least 50 to 100 problems on this topic you can start by you know looking at standard uh dynamic programming problems this you can find on CSS problem s and also on code forces blogs once you mastered the standard dynamic programming problems go on to code forces start solving random DP problems put a rating filter of 1 1600 or 1,700 on code forces and apply you know the problem uh topic tag of dynamic programming and start solving a lot of problems because mind you as you go forward if you look at graphs if you look at trees if you look at other Concepts you will see dynamic programming being used extensively right so make sure you master this topic right now itself and when you are doing dynamic programming also you know focus a bit on DP with bit masking and now I'm going to mention some topics that even if you don't do it's fine but if you do them then the chances of you becoming an expert become even higher the very first topic is graphs now I am not asking you to learn Advanced graph algorithms and solve very Advanced graph problems no learn about depth for search breadth for search connected components how you can apply shortest path algorithms try to solve a lot of basic graph problems basic graph problems means they involve basic ders Sals they involve basic properties of graphs after you're done learning the basics of graphs also learn the basics of trees because nowadays it is getting more and more common that you will find uh you know trees problems being asked in the third or the fourth problem in a lot of code forces context so learn about the basics of trees uh what comes in the basics first of all basic traversal like depth for search uh you know handling some subtree queries like uh pre-computing some information for every single subtree of a tree then learn about binary lifting binary lifting is very very important it helps you calculate stuff like lowest common ancestor of two nodes right and it also helps you do a lot of other stuff if you want to go a bit higher and if you want to go and learn some more advanced topics I would recommend learning about segment or learning about any you know range query data structure like fenry or maybe Spar stles like you can learn the basics of these you don't have to go into the depth of them again now let me give you some tips if you've already become a specialist on code forces the very first thing is to start proving your approaches now you can't be in that mindset that I am going to guess an approach and I'm going to just submit it on code forces and expect it to pass no that's not going to happen start proving your approaches when you're thinking an approach before coding it make sure you know why it works the second tip that I'm going to give you is to start reading start reading code forces blogs or blogs on other competitive programming platforms start reading blogs on CP algorithm's website at this moment you should try and become a lot more independent like you can go for video Solutions you can go for paid or free courses but if you go for reading that is going to help you a lot because going forward when you become expert or even if you become a candidate Master you are not going to find enough resources to learn Concepts you are going to have to refer to code forces blogs you are going to have to refer to editorials of problems right so get into the habit of reading and don't get into the habit of Simply watching a video solution the last tip that I want to give you as a specialist is to avoid learning irrelevant topics what are those irrelevant topics these are things like you know uh Cent decomposition on trees heavy light decomposition on trees learning about KMP algorithm learning about Z algorithm and you know learning about Advanced things like flows square root de composition these are are things that you don't need in order to become an expert now let me mention some resources that you can refer to in order to become an expert and learn these topics the very first resource is CP algorithms this is one thing that you cannot ignore another thing that I would recommend you is to start solving CSS problem set so CSS problem set contains you know a bunch of topicwise problems and these are very standard and the most important problems for every single topic so if you're learning dynamic programming for example go and start solving problems on the CSS problem set if you're learning about graphs or if you're learning trees there's an entire section for all of these topics so go and start solving problems on CSS problem set if you're a new or a pupil on code forces you might not find relevant topicwise problems on CS problem set so for this there is an entire section on introductory problems go and solve that entire section there's an entire section of searching and sorting go and solve this entire section of searching and sorting when you come to the specialist rating range this is the point where you can look at specific topics like dynamic programming graphs trees range queries right and one more thing that I want to recommend in this entire journey of you becoming an expert is that if you are xrated on code forces if your rating is let's suppose 12200 Target problems from x - 200 to x + 200 based on code forces difficulty so if you have 1200 on code forces solve problems from 1,000 rating all the way up to, 1400 on COD forces now if you're looking for a resource to you know solve rating wise problems then you can refer to my cp31 sheet this is a resource that I've constructed by spending 80 plus hours reading 50 00 plus problem statements and handpicking only those problems which are the most interesting and the most important for Ratings from 800 all the way up to 1600 on code forces so that was it for this video guys I hope you found it insightful and you now have a structured way to go from either newb pupil or specialist to an expert rating on COD forces in case you want to get more depth on you know uh what are the subtopics that you should be learning for every single topic here I have made a dedicated video for that and you can check that out as well
Info
Channel: Priyansh Agarwal
Views: 30,434
Rating: undefined out of 5
Keywords:
Id: W2RS0wJQMtU
Channel Id: undefined
Length: 15min 58sec (958 seconds)
Published: Mon Mar 18 2024
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.