1432 独木舟
n个人,已知每个人体重。独木舟承重固定,每只独木舟最多坐两个人,可以坐一个人或者两个人。显然要求总重量不超过独木舟承重,假设每个人体重也不超过独木舟承重,问最少需要几只独木舟?
Input
第一行包含两个正整数n (0
题解:
紫书P232页,排序暴力一下即可。见代码
最轻的人应当和能和他一起坐船中最重的人。
如果一个人不能和最轻的人最一起,那么他只能一个人做一艘船。
代码:
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int maxn = 1e5+100;
LL w[maxn];
int main()
{
LL n,m;
cin>>n>>m;
for(int i=0;i<n;i++)
cin>>w[i];
sort(w,w+n);
int i=0,j=n-1;
int count=0;
while(i<j)
{
if(w[i]+w[j]<=m) {i++;j--;count++;}
else if(w[i]+w[j]>m) {j--;count++;}
}
if(i==j&&w[i]<=m) count++;
cout<<count<<endl;
return 0;
}