Module Introduction to dynamic programming

Introduction to dynamic programming

**Frequency: 100/10** Dynamic programming (DP) is a crucial technique in Competitive Programming, with DP problems commonly appearing in various contests. While there is no definitive formula for solving DP problems, the good news is that they often exhibit common characteristics. By practicing your skills, you can develop the ability to quickly identify the DP state, a crucial step towards effectively tackling these problems.

Resources

- [Youtube Reducible: 5 Simple Steps for Solving Dynamic Programming Problems](https://www.youtube.com/watch?v=aPQY__2H3tE)

Problems

Hakurei Shrine 1243 / 1273 800
Buying tickets 966 / 979 800
Reading 2 810 / 874 800
Longest increasing subsequence 1015 / 1031 900
Jealousy 717 / 830 900
Maximum path 2 857 / 868 1000
Fences painting 529 / 593 1000
Hall 480 / 555 1000
Knapsack 2 750 / 788 1100
Longest common subsequence 664 / 679 1100
Yet another build array problem 453 / 484 1100
Rectangle cutting 465 / 509 1100
Palindrome query 540 / 558 1100
Marisa 442 / 467 1100
Merging elements 412 / 474 1200
Brewing potion 8 361 / 378 1200