Skip to content

akj0811/Competitive-Programming

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 

Repository files navigation

Competitive Programming for Beginners

Competitive Programming attracts one of the best minds across the world. It is all about solving problems pertaining to a multitude of data structures and algorithms. Ranging from ACM-ICPC and Goolge Code Jam to several daily contests across various platforms, there are hundreds of competitions where one can participate to showcase their skills and get better at them. Refer to our WnCC Wiki Article to get started. You can also have a look at this blog to get to know more about what competitive programming is.

How to Start?

Okay great! It is an amazing thing to do. But how to start with competitive programming. Firstly, learn a programming langauge (preferrably C++). Learn about the various standard libraries that the language offers and that are generally used in Competitive Programming. You can refer to this article for beginning with C++ and this article for learning STL.

Hone your Problem Solving Skills

Once, you are familiar with the syntax and all, you can start with practicing problems online on several platforms like Codechef, Codeforces, Hackerearth, Hackerrank, SPOJ, A2OJ, Atcoder, TopCoder. Start with the basic adhoc problems. These require just logical thinking and no complicated algorithms or data structures. The CSES Problem Set available online and A2OJ ladder is a great way to start with practising basic problems.

Data Structures and Algorithms

Having done a fair amount of practice with problems that require you to think logically and basic programming skills, it's time to learn about simple data structures and algorithms.

  • Refer to this website. This website contains all the data structures and algorithms that any competitive programmer would need in general. It will be a one stop for any thing that you might need. It contains detailed description of algorithms, implemented code, proofs and problems for practice for that concept.

  • Refer to the Edu section of codeforces for learning new data structures and algorithms.

  • Codemonk on Hackerearth is extremely useful for beginners to get acquainted with various data structures and algorithms.

  • For diving deep into DSA, you can refer the CLRS book.

  • For getting into the field of Competitive Programming, refer to the book Competitive Programming 3.

It must be kept in mind, that solving the problems is key to accomplishment in thsi field. Simply knowing the algorithms won't help. Unless you practice problems and try to come up with your own algorithms for solving problems, you won't see a growth in your performance

Time for Contests

While you learn new concepts and practice problems, it is important for you to appear in timed contests to test your skills and see where you stand. You don't need to compare yourself with others but contests really help you grow. Also, keep this in mind, do competitive programming only if you enojoy it. It makes no sense to do CP for the sake of rating on websites. You can give contests on Codeforces, Codechef, Atcoder and TopCoder. There are other websites where they hold regular contests, but these platforms are the most popular.

Do remember to "upsolve", i.e. try to solve the problems that appeared in the contests that you couldn't solve during the contest. Another advantage of practicing problems on these wesbites is that they provide editorials that is the solutions to the problems are available which you can have a look at to learn new concepts and new techniques to solve the problems.

Practice

  • You can refer to this WnCC repository to practice a few handpicked problems that are good to hone your skills in various algorithms and data structures.

  • This is an extremely useful set of problems for to help you get familiar with new concepts.

  • You can sort the problems based on difficulty of the problems on Codeforces and keep praticing problems which are slightly challenging for you to solve based on that.

Competition

So, we have planned a competition for you next week. The structure for the contest is that you will be given two days i.e. 24 hours for solving a set of 10 problems on a platform hosted on HackerRank. These problems would be arranged in order of difficulty. The problems would be simple programming exercises with a few tougher ones for the people who are interested.

The tentative structure would be -

  • 5 problems that will be ad-hoc, that is just to test your implementational skills.

  • 2 problems on simple algorithms like sorting and searching.

  • 1 problem based on recursion.

  • 1 problem based on stack and queue data structure.

  • 1 relatively advanced problem based on logical thinking and application of multiple ideas in one problem.

Specifically for the competition,

The problems wil be more focussed on logic rather than algorithms and data structures. Practice basic coding via adhoc problems using the resources above. Since each problem is based on logical thinking, it is advised to read each problem because it might be the case that you can solve the toughest problem in the contest but not the easiest one.

The contest is aimed at the beginners and hence we have kept easier problems. In the follow-up competitions soon, the level of problems will increase geradually to cater to intermediate students too.

Don't forget to join us on telegram here for all further communications about the competition.

About

This repo contains various resources for beginners in the field of Competitive Programming

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages