chenfy27的刷题记录

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

abc376C Prepare Another Box

有N个玩具,大小分别为A[i];另外有N-1个盒子,大小分别为B[i]。现要再买一个盒子,把所有玩具装到盒子里,要求每个玩具都装一个盒子,并且玩具大小不超过盒子大小。问买的盒子至少为多大?如果无法满足,输出-1。
2<=N<=2E5, 1<=A[i],B[i]<=1E9

分析:将玩具按从大到小排序再依次处理,每次用不小于玩具大小的最小盒子来装。

#include <bits/stdc++.h>
using i64 = long long;
void solve() {
int N;
std::cin >> N;
std::vector<int> a(N);
for (int i = 0; i < N; i++) {
std::cin >> a[i];
}
std::sort(a.rbegin(), a.rend());
std::multiset<int> st;
for (int i = 1; i < N; i++) {
int x;
std::cin >> x;
st.insert(x);
}
std::vector<int> remain;
for (int i = 0; i < N; i++) {
auto it = st.lower_bound(a[i]);
if (it != st.end()) {
st.erase(it);
} else {
remain.push_back(a[i]);
}
}
if (remain.size() > 1) {
std::cout << -1 << "\n";
} else {
std::cout << remain[0] << "\n";
}
}
int main() {
std::cin.tie(0)->sync_with_stdio(0);
int t = 1;
while (t--) solve();
return 0;
}

posted on   chenfy27  阅读(34)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示