Minimum Number of Work Sessions to Finish the Tasks LeetCode solution in Python
1class Solution:2def minSessions(self, tasks, T):3n = len(tasks)45@lru_cache(None)6def dp(mask):7if mask == 0:8return (1, 0)9ans = (float("inf"), float("inf"))10for j in range(n):11if mask & (1 << j):12pieces, last = dp(mask - (1 << j))13full = last + tasks[j] > T14ans = min(ans, (pieces + full, tasks[j] + (1 - full) * last))15return ans1617return dp((1 << n) - 1)[0]