高卖低买,可以交易多次

维护一个优先队列,贪心

相当于每天卖出

用当前元素减优先队列最小得到收益

用0/卖出,1/买入标志是否真实进行了交易,记录次数

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll A[];
#define P pair<ll,ll>
priority_queue<P,vector<P>,greater<P> > q;
int main()
{
int T,N;
scanf("%d",&T);
while(T--){
scanf("%d",&N);
ll ans=,t,tt=;
while(!q.empty())q.pop();
for(int i=;i<N;i++){
scanf("%lld",&A[i]);
q.push(P(A[i],));
q.push(P(A[i],));
t=A[i]-q.top().first;
if(q.top().second==)tt+=;
q.pop();
ans+=t; }
cout<<ans<<' '<<tt<<'\n';
}
}
05-29 00:04