zoukankan      html  css  js  c++  java
  • [Usaco2009 Feb]Stock Market 股票市场 完全背包

    Description

    尽管奶牛们天生谨慎,她们仍然在住房抵押信贷市场中受到打击,现在她们开始着手于股市。 Bessie很有先见之明,她不仅知道今天S (2 <= S <= 50)只股票的价格,还知道接下来一共D(2 <= D <= 10)天的(包括今天)。 给定一个D天的股票价格矩阵(1 <= 价格 <= 1000)以及初始资金M(1 <= M <= 200,000),求一个最优买卖策略使得最大化总获利。每次必须购买股票价格的整数倍,同时你不需要花光所有的钱(甚至可以不花)。这里约定你的获利不可能超过500,000。 考虑这个牛市的例子(这是Bessie最喜欢的)。在这个例子中,有S=2只股票和D=3天。奶牛有10的钱来投资。 今天的价格 | 明天的价格 | | 后天的价格 股票 | | | 1 10 15 15 2 13 11 20   以如下策略可以获得最大利润,第一天买入第一只股票。第二天把它卖掉并且迅速买入第二只,此时还剩下4的钱。最后一天卖掉第二只股票,此时一共有4+20=24的钱。

    Input

    * 第一行: 三个空格隔开的整数:S, D, M

    * 第2..S+1行: 行s+1包含了第s只股票第1..D天的价格

    Output

    * 第一行: 最后一天卖掉股票之后最多可能的钱数。

    完全背包.
    $f_{i}$ 表示一共花费 $i$ 元钱所能获得的最大利益
    令前一天的最大获利为 $M$,第 $j$ 个股票今天价格为 $v$,前一天为 $cost$.
    则 $f_{i}=f_{i-cost} +v-cost$ 表示将这个股票在前一天买入,并在今天卖出.       
    对于每一只股票,我们都进行这样的决策,因为总量 $M$ 是前一天的,而股票可以随意买入卖出,所以是正确的 
    #include<cstdio>
    #include<algorithm>
    #include<iostream>
    #include<cstring>
    #include<stack>
    #include<string>
    using namespace std;
    void setIO(string a){ freopen((a+".in").c_str(),"r",stdin),freopen((a+".out").c_str(),"w",stdout); }
    void shutIO(){fclose(stdin),fclose(stdout);}
     
    #define maxn 500090
    #define inf 100000000
    int val[200][200], f[maxn];
    int main(){
        int S,D,M;
        scanf("%d%d%d",&S,&D,&M);
        for(int i=1;i<=S;++i)
            for(int j=1;j<=D;++j) scanf("%d",&val[j][i]);
        for(int i=2;i<=D;++i){
            int tmp=0;
            memset(f,0,sizeof(f));
            for(int j=1;j<=S;++j){
                int cost=val[i-1][j],v=val[i][j];
                for(int k=cost;k<=M;++k) f[k]=max(f[k],f[k-cost]+v-cost),tmp=max(tmp,f[k]);
            }
            M+=tmp;
        }
        printf("%d
    ",M);
        return 0;
    }
    

      

  • 相关阅读:
    POJ1486 Sorting Slides 二分图or贪心
    POJ2060 Taxi Cab Scheme 最小路径覆盖
    POJ3083 Children of the Candy Corn 解题报告
    以前的文章
    POJ2449 Remmarguts' Date K短路经典题
    这一年的acm路
    POJ3014 Asteroids 最小点覆盖
    POJ2594 Treasure Exploration 最小路径覆盖
    POJ3009 Curling 2.0 解题报告
    POJ2226 Muddy Fields 最小点集覆盖
  • 原文地址:https://www.cnblogs.com/guangheli/p/9928985.html
Copyright © 2011-2022 走看看