题目:https://cn.vjudge.net/contest/178387#problem/C
n个人,已知每个人体重。独木舟承重固定,每只独木舟最多坐两个人,可以坐一个人或者两个人。显然要求总重量不超过独木舟承重,假设每个人体重也不超过独木舟承重,问最少需要几只独木舟?
思路:先排序,从最大开始,如果当前最小的+最大的可以,则他们一条船,否则最大的一条船。
#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std;
int a[20000];
int main()
{
int n, m, i, j;
while (cin >> n >> m)
{
int minn = 0, maxn = n - 1,sum=0;
memset(a, 0, sizeof(a));
for (i = 0; i < n; i++)
cin >> a[i];
sort(a, a + n);
while (minn <= maxn)
{
if (a[minn] + a[maxn] <= m)
minn++;
maxn--;
sum++;
}
cout << sum << endl;
}
return 0;
}