救生艇
问题描述 :
第 i 个人的体重为 people[i],每艘船可以承载的最大重量为 limit。
每艘船最多可同时载两人,但条件是这些人的重量之和最多为 limit。
返回载到每一个人所需的最小船数。(保证每个人都能被船载)。
示例 1:
输入:people = [1,2], limit = 3
输出:1
解释:1 艘船载 (1, 2)
示例 2:
输入:people = [3,2,2,1], limit = 3
输出:3
解释:3 艘船分别载 (1, 2), (2) 和 (3)
示例 3:
输入:people = [3,5,3,4], limit = 5
输出:4
解释:4 艘船分别载 (3), (3), (4), (5)
输入说明 :
首先输入人的数量n,然后输入n个整数,表示人的体重。
最后输入limit。
1 <= n <= 50000
1 <= 人的体重 <= limit <= 30000
输出说明 :
输出一个整数
输入范例 :
4
3 5 3 4
5
输出范例:
4
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int minShips(vector<int> &people,int limit){
sort(people.begin(),people.end());
int count=0,i=0,j=people.size()-1;
while(i<=j){
count++;
if(people[i]+people[j]<=limit){//最胖的加最瘦的小于limit,这两人就上同一条船
i++;
}
j--;
}
return count;
}
int main(){
int n,num,limit;
cin>>n;
vector<int> people;
for(int i=0;i<n;i++){
cin>>num;
people.push_back(num);
}
cin>>limit;
cout<<minShips(people,limit);
}