题目来源:http://acm.nyist.net/JudgeOnline/problem.php?pid=71
题目中一条船只能做两个人,没看见,wa了一次!
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int MAXN = 310;
int main()
{
int arr[MAXN];
int T, iBoatWeight, n, i, k1, k2, ans;
scanf("%d", &T);
while(T--)
{
scanf("%d %d", &iBoatWeight, &n);
for(i = 0; i < n; ++i)
scanf("%d", &arr[i]);
sort(arr, arr+n);
k1 = 0, k2 = n-1, ans = 0;
while(k1 <= k2)
{
if(k1 == k2)//独自一人,一人一船
{
ans++;
break;
}
if(arr[k1] + arr[k2] > iBoatWeight)
ans++, k2--;
else if(arr[k1] + arr[k2] <= iBoatWeight)
ans++, k2--, k1++;
}
printf("%d\n", ans);
}
return 0;
}