这个题要求最多可以在餐厅待多少天,人数一共就那么几个,而且至少两人一组,那么如果可以分两人一组就尽量两人一组,这样组的总数才会多,然后就是贪心的思想了,最大的带一个他可以带的最小的,如果带不了,就放弃这个人,这样还能留出更多选择的余地。这个操作用尺取法就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;
}