• Codeforces Round #437 (Div. 2, based on MemSQL Start[c]UP 3.0


    题意:一些股票的价格,我们可以选择买进卖出,但一天只有一个操作,问最大盈利

    思路:对于当天,如果卖出的话&&之前有比他小的,我们肯定是找个最小那天的买进,但又不知道现在卖是不是最赚的,所以我们可以用multiset,这个和set类似,但可以存储相同的数字,并排序

       所以我们删掉那个最小的,添加2个当前的,一个当中是中转,一个当作是数字,

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 multiset<int > s;
     5 multiset<int >::iterator it;
     6 
     7 int main(){
     8     int n;
     9     cin>>n;
    10     ll sum=0;
    11     for(int i=1;i<=n;i++){
    12         int x;
    13         scanf("%d",&x);
    14         if(!s.empty()&&x>*s.begin()){
    15             sum+=(x-*s.begin())*1LL;
    16             s.erase(s.begin());
    17             s.insert(x);
    18             s.insert(x);
    19         }
    20         else s.insert(x);
    21     }
    22     cout<<sum<<endl;
    23     return 0;
    24 }
  • 相关阅读:
    正则表达式 \n和\r
    【转】单循环赛赛程安排算法研究
    Iterator效率
    Map获取键值
    PL/SQL语法详解(pdf)
    Iterator模式
    测试js函数的静态页面
    【转】java的一些基本概念
    Oracle 11g用户解锁
    oracle官方文档
  • 原文地址:https://www.cnblogs.com/hhxj/p/7620207.html
Copyright © 2020-2023  润新知