Hi there, in this course I will be teaching the Dynamic Programming concept used in competitive programming with detailed explanation and implementation in C++. This course is a Lengthy Course as it consists of many subtopics and concepts which will take the time as we can't skip fast forward. And the key to master this paradigm of computer programming is Practice.

This course will be covered in three levels which are Basic, Intermediate, and Advanced Dynamic Programming. So let start with the first thing first.

**Dynamic Programming - Foundation: ( Lectures on YouTube)**

- DP0: Course Overview
- DP1: Getting Started with Dynamic Programming
- DP2: Fundamental concepts in Dynamic Programming
- DP3: Maximum Sum Subarray (or) Maximum Subarray Sum
**Practice Problems**

- DP E1: Jumping Problem ( Frog 1 ) || AtCoder
- DP6: Longest Common Subsequence ( LCS )
- DP E2: Longest Common Subsequence Implementation ( Leetcode )
- DP7: 0-1 Knapsack Problem || AtCoder
- DP8: Longest Palindromic Subsequence ( LPS ) using LCS
**Practice Problems**

- DP9: General approach to solve any DP Problem
- The number of ways to write N>=1 as a sum of 1, 3, and 4 is solved in
**Lecture DP9**.

**Practice Problem Sets**

**Problem Set 1**

**Problem Set 2 ( Editorial will be published on Youtube )**

**The problems in this set are from CodeChef Learn DSA Series, other problems will be included in the next sets.**

**Intermediate Dynamic Programming**

**DP on Trees****Bitmask DP**

**Advanced Dynamic Programming**

**Ugly DP State**- CF342D Xenia and Dominoes
**DP Optimization**- CF189C Kalila and Dimna in the Logging Industry
- CF321E Ciel and Gondolas

**Note:**More Topics will be added as we proceed. Each lecture will be followed by example problem and practice problem link will be shared here itself.

For your suggestion and feedback do comment here.

Thank You

**CODELABS3277**

Please add new graph theory tutorials too.

ReplyDelete