//紫书P253 装箱
//Serene
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<cmath>
using namespace std;
const int maxn=2e5+10;
int Q,n,l,w[maxn];bool vis[maxn];
int aa=0;char c;
int read() {
aa=0;c=getchar();
while(c<'0'||c>'9') c=getchar();
while(c>='0'&&c<='9') aa=aa*10+c-'0',c=getchar();
return aa;
}
int main() {
Q=read();int tot=0,ans,pos;
while(Q--) {
n=read();l=read();tot=0;ans=0;
memset(vis,0,sizeof(vis));pos=n;
for(int i=1;i<=n;++i) w[i]=read();
sort(w+1,w+n+1);
for(int i=1;i<=n;++i) if(!vis[i]) {
tot++;ans++;vis[i]=1;
if(i!=n&&tot!=n&&l>=w[i]+w[i+1])
for(pos=n;pos>i;--pos) if(!vis[pos]&&w[pos]+w[i]<=l) {
vis[pos]=1;tot++;break;
}
if(tot==n) break;
}
cout<<ans<<"\n";
if(Q) cout<<"\n";
}
return 0;
}
装箱Bin Packing
最新推荐文章于 2024-01-15 09:46:42 发布