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 771 / 806 800
Buying tickets 551 / 559 800
Reading 2 500 / 539 800
Longest increasing subsequence 649 / 663 900
Jealousy 464 / 557 900
Maximum path 2 556 / 560 1000
Fences painting 309 / 354 1000
Hall 275 / 325 1000
Knapsack 2 489 / 511 1100
Longest common subsequence 440 / 455 1100
Yet another build array problem 304 / 322 1100
Rectangle cutting 305 / 335 1100
Palindrome query 343 / 352 1100
Marisa 266 / 281 1100
Merging elements 270 / 310 1200
Brewing potion 8 227 / 241 1200