这个题要求最多可以在餐厅待多少天,人数一共就那么几个,而且至少两人一组,那么如果可以分两人一组就尽量两人一组,这样组的总数才会多,然后就是贪心的思想了,最大的带一个他可以带的最小的,如果带不了,就放弃这个人,这样还能留出更多选择的余地。这个操作用尺取法就ok了。
#include<bits/stdc++.h>
using namespace std;
const int M=1e5+5;
typedef long long ll;
ll xx[M]; ll yy[M];
ll cha[M];
int main(){
ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
int t; cin>>t;
while(t--){
int n; cin>>n;
for(int i=1;i<=n;i++) cin>>xx[i];
for(int i=1;i<=n;i++){
cin>>yy[i];
cha[i]=yy[i]-xx[i];
}
sort(cha+1,cha+1+n);
int l=1; int r=n;
int sum=0;
while(l<r){
if(cha[l]+cha[r]<0){
l++;
continue;
}
if(cha[l]+cha[r]>=0){
l++; r--;
sum++;
}
}
cout<<sum<<endl;
}
return 0;
}