优先队列解法
2026-03-19 21:14:39
发布于:上海
1阅读
0回复
0点赞
优先队列不进行完整排序,而且内存占用随测试点大小变化,理论上更好
代码:
#include <iostream>
#include <queue>
#include <vector>
using namespace std;
priority_queue<int, vector<int>, greater<int>> a;
int main(){
int n, k, ans=0, cnt=0;
cin >> k >> n;
for (int i=0; i<n; i++){
int x;
cin >> x;
a.push(x);
}
while (!a.empty()){
const int x = a.top();
if (cnt + x <= k){
cnt += x;
ans++;
a.pop();
} else {
break;
}
}
cout << ans;
return 0;
}
这里空空如也








有帮助,赞一个