优先队列和dp
简单说就是
输入一个有序整数数组,依次访问每个数,可以取或者不取,但是每次取必须保证所有取得的数之和大于等于0,求最多可以取几个数。
#include <priority_queue>
#include <iostream>
using namespace std;
int main(){
int t;
cin>>t;
for(int i=0;i<t;i++){
int n;
cin>>n;
vector<int> nums;
for(int j=0;j<n;j++){
int temp;
cin>>temp;
nums.push_back(temp);
}
priority_quque<int, vector<int>, greater<int>> q;
int sum=0;
for(auto item:nums){
sum+=item;
q.push(item);
while(sum<0){
sum-=q.front();
q.pop();
}
}
cout<<q.size();
}
}