5.1 DP Strategies
- Range DP
- dp[l][r]= minimum cost to make substring s[l..r] a palindrom
- Usually dp[l][r]=min(dp[l+1][r],dp[l][r−1],dp[l+1][r−1]+ cost)
- All-possible-splits DP
- Matrix chain mult.: DP[i][j]=mini≤k<jleft matrixDP[i][k]+right matrixDP[k+1][j]+combiningpi−1⋅pk⋅pj
- Try all possible splits and chose cheapest one
- Sliding window
- Idea: Extend window until no more possible. Then either reset window or pull from left.
- Prefix sum
- Precompute the sum up until element
- Return dp[end]−dp[start]