dynamic programming
math
probability
