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 896 / 930 800
Buying tickets 651 / 658 800
Reading 2 576 / 625 800
Longest increasing subsequence 733 / 747 900
Jealousy 531 / 625 900
Maximum path 2 628 / 635 1000
Fences painting 361 / 410 1000
Hall 324 / 377 1000
Knapsack 2 549 / 577 1100
Longest common subsequence 496 / 511 1100
Yet another build array problem 340 / 363 1100
Rectangle cutting 348 / 382 1100
Palindrome query 389 / 400 1100
Marisa 306 / 323 1100
Merging elements 311 / 362 1200
Brewing potion 8 265 / 279 1200