Implement dp_drills(weights, values, capacity, m, n, s1, s2) with bottom-up tabulation and return a dict with keys:
'knapsack': maximum total value of a 0/1 knapsack (item i has weight weights[i] and value values[i], each item used at most once, total weight at most capacity).'grid_paths': number of paths from the top-left to the bottom-right cell of an m x n grid moving only right or down.'lcs': length of the longest common subsequence of strings s1 and s2.'complexity': the fixed dict {'knapsack': 'O(n*W) time, O(n*W) space', 'grid_paths': 'O(m*n) time, O(m*n) space', 'lcs': 'O(m*n) time, O(m*n) space'}.