Re: [闲聊] 每日LeetCode

楼主: dustsstar79 (穆)   2023-02-22 08:54:40
之前都用JPTT发废文每篇都只值1P,来试试看用电脑发可以赚多少==
1011. Capacity To Ship Packages Within D Days
传输带有n个包裹,每个重量<=500,给你一艘载重x的船,
每天照顺序载走一些包裹且其总重<=x,问d天之内载完的最小船载重x多少?
1 <= d <= n <= 50000
然后就想到对答案二分搜了
C++ code:
class Solution {
public:
int shipWithinDays(vector<int>& weights, int days) {
int ws = weights.size();
int l = *max_element(weights.begin(), weights.end()), r = 25000000;
int d = 0, sum = 0;
while(l <= r){
int mid = l + (r - l)/2;
d = 0;
for(int i=0; i<ws; i++){
sum += weights[i];
if(sum > mid){sum = weights[i]; d++;}
else if(sum == mid){sum = 0; d++;}
}
if(sum){sum = 0; d++;}
if(d <= days) r = mid - 1;
else if(d > days) l = mid + 1;
}
return l;
}
};
作者: Rushia (みけねこ的鼻屎)   2023-02-22 09:08:00
大师

Links booklink

Contact Us: admin [ a t ] ucptt.com