This document discusses greedy algorithms and divide and conquer algorithms. It provides examples of problems that can be solved using each approach and outlines the general solutions. For greedy algorithms, it explains that they make locally optimal choices at each step without considering future possibilities. For divide and conquer, it explains the three main steps of dividing the problem into subproblems, solving the subproblems recursively, and merging the solutions. It also provides an example problem of finding the number of inversions in an array by modifying the merge sort algorithm.