后悔操作的实现
in
6
4 -4 1 -3 1 -3
out
5
给出 一个数组
题目让你求出在所加的值不小于0的情况下求出最多可选的数
限制:只能从左往右选
反悔操作的实现
利用优先队列,每当眼前解优于之前的解时,便可以抛弃原先的解选择当前解
key code
const int N=2010;
int n,m,k,a[N],b[N],p[N];
void solve(){
//try it again.
cin>>n;
up(1,n)cin>>a[o];
priority_queue<int>q;
int res=0,cur=0;
up(1,n){
if(a[o]>=0){
cur+=a[o];
res++;
}
else{
if(cur+a[o]>=0){
res++;
cur+=a[o];
q.push(-a[o]);
}
else if(!q.empty()&&q.top()>-a[o]){
cur+=a[o]+q.top();
q.pop();
q.push(-a[o]);
}
}
}
cout<<res;
}
标签:cur,int,res,top,Codeforces,up,贪心
From: https://www.cnblogs.com/liangqianxing/p/17058594.html