题解:P17147 [ICPC 2017 Xi'an R] Lovers
P17147 [ICPC 2017 Xi'an R] Lovers 题解
思路
贪心。我们让女孩从小到大排,男孩从大到小排。让最小的女孩去配当前最大的男孩,配不上就说明这个女孩和谁都配不上,扔了;配得上就计数器加一,然后双方都往后移。
证明:最小的女孩如果能配某个男孩,那她配当前最大的男孩一定也能配,而且把最大的男孩留给她不会比留给别人更差。所以这样贪心是对的。 ::::success[code]
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
const int N = 2e5 + 7;
int n, k;
int a[N], b[N];
signed main(){
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
int T;
cin >> T;
while(T --){
cin >> n >> k;
for(int i = 1; i <= n; i ++) cin >> a[i];
for(int i = 1; i <= n; i ++) cin >> b[i];
sort(a + 1, a + 1 + n);
sort(b + 1, b + 1 + n, greater<int>());
int l = 1, r = 1, ans = 0;
while(l <= n && r <= n){
if(a[l] + b[r] >= k){
ans ++;
l ++;
r ++;
}
else l ++;
}
cout << ans << endl;
}
return 0;
}