巅峰赛#34 T1 题解
2026-05-30 13:57:55
发布于:北京
20阅读
0回复
0点赞
电风扇 T1 为啥是黄。
好的。
注意到,这是一个贪心。
那么,肯定是要排序的。
为什么是从大到小呢?
不知道。
骗你的,咋排序都行。
那么,每个容器都要匹配到它能装的最大的宝石。
不能装就直接抛弃此宝石,能装就继续。
这样我们就得到了不能装的最小的宝石。
但有可能是多个。
所以如果是多个就输出 -1。
好的。(首尾呼应)
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int N=2e5+5;
int a[N],b[N],vis[N];
int n,ans;
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n;
for (int i=1;i<=n;i++){
cin>>a[i];
}
for (int i=1;i<n;i++){
cin>>b[i];
}
sort(a+1,a+n+1,greater<int>());
sort(b+1,b+n,greater<int>());
for (int i=1,j=1;i<=n&&j<n;i++){
if (a[i]<=b[j]){
j++;
vis[i]=1;
}
}
for (int i=1;i<=n;i++){
if (!vis[i]){//说明被抛弃了
if (ans){//抛弃了两个
cout<<-1;
return 0;
}
ans=a[i];
}
}
cout<<ans;
return 0;
}
这里空空如也







有帮助,赞一个