Saturday 19 November 2016

What all should I know to be a good Competitive Programmer?

Competitive Programming(CP) mainly deals with algorithms. One has to be strong in developing algorithms and should have an excitement to solve a problem.
The most important thing here is the "Patience". You cannot learn Competitive Programming in one day. It has taken years for masters to become masters. But one thing that should keep you motivated is that masters were someday beginners. If they can be why not you?

To develop algorithms, one has to be strong in Mathematics and logical ability to solve a problem. 
The best way to learn in Competitive Programming is to "Practice". And the best way to advance is to fail to solve a problem. You will think of the solution to the problem till the time you are exhausted and that is what is needed. Even you fail many times, don't give up.

A bit of knowledge on Complexity Analysis and Discrete Mathematics is required for a good solver.

There are different types of problems that one can encounter or they could be called a strategy to solve a problem . Those Include-

  1. Dynamic Programming(Knapsack, 8-queens, Traveling Salesman)
  2. Backtracking(8-queens,Sudoku)
  3. Greedy Algorithms (Matching Pursuit, Egyptian Fractions)
  4. Sorting (Quick Sort, Merge-sort)
  5. Search(Linear Search,Binary Search)
  6. Path Finding(BFS,DFS)
  7. Network Flow Problems (Minimum Cut, Max Flow)
  8. Combinatorial  (Permutations, Calendrical Calculations)
  9. Geometrical (Convex Hull, Minkwoski Sum)
Having knowledge about these algorithms is surely a plus as it will help you to think about a problem's solution and once you are through with these, you can easily optimise your solution according to the requirement of the problem.


~~Cheers!

No comments:

Post a Comment