Dynamic Programming is one of the best algorithms around there. It has the power to utilize every other algorithm and optimize it. The essence of DP lies in the fact of avoiding repetitions which lead to greater time complexity. In DP we study how to save the previous data for a particular state of the function for a future repetitive use. There are almost no contests which brag about they don't have a DP question in their set.