魔法货车题解
想法应该很容易想到,挑选最大的然后让它一直翻倍直到满足条件就可以了。这样做会超时么?可能很多人会有这样的疑惑而不敢写,但是我可以明确的告诉你,不会!原因是这是指数级增长的,,这意味着如果我们最大的是1也只需要操作30次即可。复杂度很小
class Solution { public: int Holy(int n, int m, vector<int>& x) { // write code here long long sum=0,mx=0; for(int i=0;i<m;i++) { mx=max(mx,x[i]+0ll); sum+=x[i]; } if(sum>=n) { return 0; } long long lef=n-sum,tot=0; while(lef>0) { lef-=mx; mx*=2; tot++; } return tot; } };