Maximizing the sum from m stacks using k pop's
You can use dynamic programming to solve this problem in polynomial time.
Create a table $A[i,l]$ with $0\le i \le m$ and $0\le l\le k$, where $A[i,l]$ reprensents the optimal allocation using at most $l$ pops among the first $i$ stacks. We initiate by $A[.,0]=A[0,.]=0$ and we have the following inductive step :
$$
A[i+1,l]=\max\left\{A[i,l-t]+(t \text{ pops from stack } i+1), 0\le t \le l\right\}
$$
We can compute $A[m,k]$ in time $O(k^2m)$.