zoukankan      html  css  js  c++  java
  • 【NOIP2016模拟3】量化交易-贪心

    Description

    applepi训练了一个可以自动在股票市场进行量化交易的模型。通常来说,applepi写出的模型,你懂得,就好比一架印钞机。不过为了谨慎起见,applepi还是想先检查一下模型的效果。
    applpie收集了“塞帕思股份(surpass)”在最近的连续N天内的价格。在每一天中,他可以做如下事情之一:
    1.睡(把)觉(妹)。
    2.以当天的价格作为成交价买入1股“塞帕思”的股票。
    3.以当天的价格作为成交价卖出1股“塞帕思”的股票。
    最初applepi不持有该股票。现在你需要计算出在最优策略下,N天后applepi能够获得的最大利润。为了维护森林的和平,本着清仓甩锅的原则,在N天的交易结束后applepi也不能持有“塞帕思”的股票。

    Input

    每个测试点包含若干组数据,以EOF结尾。对于每组数据:
    第一行1个整数N。
    第二行N个正整数,相邻两个整数之间用1个空格隔开,表示每一天股票的价格。

    Output

    对于每组数据,首先按样例所示的格式“Case #k:”输出该组数据的编号,然后输出一个整数,表示applepi最大能够获得的利润。

    Sample Input

    6
    2 6 7 3 5 6
    8
    1 2 3 4 5 6 7 8

    Sample Output

    Case #1: 8
    Case #2: 16


    思路

    • 引用一段解释,关于加两次temp:

    假设堆顶是第a天的报价,当前是第b的的报价,第a天买进的股票应该在第c天卖出,
    第b天买进的股票需要在第d天卖出,
    a<b<c<d,收益p[c]-p[a]+p[d]-p[b]
    现在把第a天的股票在第b天抛出,p[b]-p[a],然后又买进第b天的股票,那么在第c天的时候,
    堆顶为第b天的股票,抛出第b天的股票 p[c]-p[b],收益总和p[b]-p[a]+p[c]-p[b]=p[c]-p[a]
    但因为第b天的股票应该在第d天抛出,所以要第二次再次买进第b天的股票
    一一一一 https://www.cnblogs.com/Yuzao/p/6886194.html


    代码

    #include <iostream>
    #include <cstdio>
    #include <queue>
    using namespace std;
    int n,ntime;
    priority_queue<int,vector<int>, greater<int> > q;
    int main()
    {
    	while(~scanf("%d",&n))
    	{
    		long long temp,keep,ans=0; ++ntime;
    		while(!q.empty()) q.pop();
    		for(int i=1;i<=n;i++)
    		{
    			scanf("%lld",&temp); q.push(temp);
    			if(temp>q.top()) ans+=temp-q.top(),q.pop(),q.push(temp);
    		}
    		printf("Case #%d: %lld
    ",ntime,ans);
    	}
    	return 0;
    }
    
  • 相关阅读:
    搭建kafka集群
    fluentd 安装、配置、使用介绍
    彻底解决 es 的 unassigned shards 症状
    nginx 反向代理时丢失端口的解决方案
    kubernetes的imagePullSecrets如何生成及使用
    创建MySQL数据库账号
    Linux中查找文件
    Linux快速访问多个目录
    Django查询数据库返回字典dict数据
    linux 将压缩包复制到另外一个文件夹下面
  • 原文地址:https://www.cnblogs.com/wuwendongxi/p/13340822.html
Copyright © 2011-2022 走看看