This document discusses dynamic programming techniques for three problems: edit distance, longest increasing subsequence, and matrix chain multiplication. It provides examples of how to calculate the edit distance between two strings by finding the minimum cost of insertions, deletions, and replacements needed to convert one string to the other. It then explains how to find the longest increasing subsequence of a given array using dynamic programming by building up the solution bottom-up. Finally, it briefly mentions finding the most efficient way to multiply a chain of matrices using dynamic programming.