HDU 6438 Buy and Resell

Posted liulex

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDU 6438 Buy and Resell相关的知识,希望对你有一定的参考价值。

高卖低买,可以交易多次

维护一个优先队列,贪心

相当于每天卖出

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

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

 

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll A[500005];
#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=0,t,tt=0;
        while(!q.empty())q.pop();
        for(int i=0;i<N;i++)
            scanf("%lld",&A[i]);
            q.push(P(A[i],0));
            q.push(P(A[i],1));
            t=A[i]-q.top().first;
            if(q.top().second==1)tt+=2;
            q.pop();
            ans+=t;

        
        cout<<ans<< <<tt<<\n;
    

 

以上是关于HDU 6438 Buy and Resell的主要内容,如果未能解决你的问题,请参考以下文章

HDU 6438 Buy and Resell

HDU 6438 Buy and Resell (CCPC网络赛) 堆 贪心

HDU6438:Buy and Resell(贪心+数据结构)

2018中国大学生程序设计竞赛 - 网络选拔赛 hdu6438 Buy and Resell 买入卖出问题 贪心

HDU6438 Buy and Resell 解题报告(一个有趣的贪心问题的严格证明)

HDU 6438 Buy and Resell ( 2018 CCPC 网络赛 && 贪心 )