题解:P11199 [JOIG 2024 Open] ダンス / Dance
[JOIG 2024 Open] ダンス / Dance
思路:
我们对 \(2N\) 个学生身高进行排序,每相邻两个为一组,若有一组或以上身高差大于 \(D\),则不合法,否则合法。
原因:设 \(a\),\(b\),\(c\),\(d\) 身高顺序不递减,要保证 \(a\) 所在组合合法,\(a\) 与 \(b\) 搭配最佳,\(c\) 同理应与 \(d\) 搭配。
注意 \(1 \le N \le 100\),那么数组大小要开到至少 \(200\)。
代码:
#include<bits/stdc++.h>
using namespace std;
int N, D;
int A[205];
int main() {
cin >> N >> D;
for(int i=1; i<=2*N; i++) cin >> A[i];
sort(A+1, A+(2*N)+1);
for(int i=1; i<=2*N; i+=2) {
if(A[i+1]-A[i]>D) {
cout << "No";
return 0;
}
}
cout << "Yes";
return 0;
}

浙公网安备 33010602011771号