题目大意:一个背包最多装两个东西,问装完需要几个背包;
思路:一道基本的贪心问题,先装最大的看看能不能捎带这装个小的,另外这个题的需要格式控制一下。
下面给出AC代码:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=1e5+100;
const int INF=0x3f3f3f3f;
int a[maxn];
int main()
{
int T; scanf("%d",&T);
while(T--)
{
int n,m; scanf("%d %d",&n,&m);
for(int i=0;i<n;i++) scanf("%d",&a[i]);
sort(a,a+n);
int ans=0;
for(int i=n-1,j=0;i>=j;i--)
{
if(i==j)
{
ans++;
break;
}
else if(a[i]+a[j]<=m)
{
j++;
ans++;
}
else
{
ans++;
}
}
printf("%d\n",ans);
if(T!=0) printf("\n");
}
return 0;
}