zoukankan      html  css  js  c++  java
  • ZROI2018提高day4t1

    传送门

    分析

    一道贪心题,我们用两个优先队列分别维护卖出的物品的价格和买入但没有卖出的物品的价格,然后逐一考虑每一个物品。对于每一个物品如果他比卖出的物品中的最低个价格,则改将现在考虑的物品卖出,将之前价格最低的物品拿出重新考虑,否则继续考虑现在的物品。然后我们进行第二步考虑,考虑现在买入但没卖出的物品的价格最低的那个,如果现在这个物品价格大于他,则在这个地方卖掉它,否则在这个位置买入新物品。

    代码

    #include<bits/stdc++.h>
    using namespace std;
    #define li long long
    priority_queue<li>q1;
    priority_queue<li>q2;
    void work(){
        li n,i,x,y,ans=0,cnt=0;scanf("%lld",&n);
        while(!q1.empty())q1.pop();while(!q2.empty())q2.pop();
        for(i=1;i<=n;i++){
          scanf("%lld",&x);
          if(!q1.empty()&&x>-q1.top()){
              ans+=x+q1.top();y=-q1.top();q1.pop();q1.push(-x);
          }else y=x;
          if(!q2.empty()&&y>-q2.top()){
              ans+=y+q2.top();q2.pop();q1.push(-y);cnt+=2;
          }else q2.push(-y);
        }
        cout<<ans<<' '<<cnt<<endl;
    }
    int main(){li t;scanf("%lld",&t);while(t--)work();return 0;}
  • 相关阅读:
    属性包装
    生成器
    迭代器
    深拷贝-浅拷贝
    装饰器-wrapper
    类别不均衡
    参数优化-学习曲线
    参数优化-验证曲线
    参数优化-API
    D. Number Of Permutations 符合条件的排列种类
  • 原文地址:https://www.cnblogs.com/yzxverygood/p/9688456.html
Copyright © 2011-2022 走看看