• HDU6438 Buy and Resell


    题目链接:https://cn.vjudge.net/problem/HDU-6438

    知识点:  贪心

    题目大意:

      本题讨论的是同一种物品的买卖。有 n 天,每一天这种物品都有一个价格。每天可以选择购买一个物品,或者出售一个已有的物品,或者什么都不做。问最后最多能赚多少钱,并且在赚最多钱的前提下的最少操作次数是多少?

    解题思路:

      Talk is cheap, show me the code.

    AC代码:

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 typedef long long LL;
     4 priority_queue<LL,vector<LL>,greater<LL> > buy;//小顶堆记录能够购买物品的价格
     5 map<LL,int> sell;//记录用各个售价出售了多少件物品
     6 
     7 int main(){
     8     int n,t;
     9     scanf("%d",&t);
    10     while(t--){
    11         LL profit=0;//总收益
    12         int times=0;//交易次数
    13         
    14         //初始化
    15         while(!buy.empty()) buy.pop();
    16         sell.clear();
    17 
    18         scanf("%d",&n);
    19         for(int i=0;i<n;i++){//遍历每一天的价格
    20             LL cost;
    21             scanf("%lld",&cost);
    22             if(!buy.empty()&&buy.top()<cost){//如果该天的价格小于buy堆顶的价格
    23                 LL temp=buy.top();
    24                 buy.pop();
    25                 profit+=cost-temp;//更新总收益
    26                 times+=2;//更新交易次数
    27                 
    28                 if(sell[temp]){
    29     //如果曾经用目前的这个买入价卖出过物品,那么之前的这个卖出就是没有意义的,把当时的那次
    30     //卖出操作抹去,把物品留到现在再卖,总收益是一样的,不过这样可以省下一次卖出操作和一次
    31     //买入操作。
    32                     times-=2;
    33                     buy.push(temp);//抹去曾经的那次买入操作
    34                     sell[temp]--;  //抹去曾经的那次卖出操作
    35                 }
    36                 sell[cost]++;//更新sell
    37             }
    38             buy.push(cost);//更新buy
    39         }
    40         cout<<profit<<" "<<times<<endl;
    41     }
    42 
    43     return 0;
    44 }
    “这些年我一直提醒自己一件事情,千万不要自己感动自己。大部分人看似的努力,不过是愚蠢导致的。什么熬夜看书到天亮,连续几天只睡几小时,多久没放假了,如果这些东西也值得夸耀,那么富士康流水线上任何一个人都比你努力多了。人难免天生有自怜的情绪,唯有时刻保持清醒,才能看清真正的价值在哪里。”
  • 相关阅读:
    pythonchallenge 解谜 Level 6
    pythonchallenge 解谜 Level 5
    pythonchallenge 解谜 Level 4
    pythonchallenge 解谜 Level 3
    pythonchallenge 解谜 Level 2
    pythonchallenge 解谜 Level 1
    CCF 201912-2 回收站选址
    JavaWeb+JDBC+Servlet+SqlServer实现登录功能
    后台连接数据库的方法
    jQuery实现轮播图
  • 原文地址:https://www.cnblogs.com/Blogggggg/p/9567290.html
Copyright © 2020-2023  润新知