zzuli 1904 小火山的股票交易

原创 2016年08月31日 16:14:20

Description

  “股市有风险,入市需谨慎”,小火山经历了之前买卖一次或者两次的股票♂交易,对于股票买卖已经很有经验了,
现在的他最多可以进行K次买卖,身为一个聪明的acmer,已经准确的知道了某只股票在未来N天的价格,每一次买入必须
卖出后才能进行下次买卖。现在,小火山想知道他最多可以获得多少利润? 

Input

输入第一行是一个整数T(T <= 50), 表示一共有T组数据。
每一组数据, 第一行是两个个整数N, K(1 <= N, K <= 1000), 表示一共有N天,买卖K次。 第二行是N个数, 
表示连续N天该股票的价格(0 <= A1, A2, A3,...,An <= 1000000)

Output

对于每一组数据, 输出一个整数, 表示小火山能够获得的最大的利润。

Sample Input

22 11 23 21 2 3

Sample Output

12
dp;
dp[i][j]表示第i次交易在j天内的最大值。
那么dp[i][j] = max(dp[i][j-1], max(dp[i-1][r-1] + a[j]-  a[r])(r<=j))
我们要找到最大的dp[i-1][k],如果再加一层循环的话就会超时,我们可以在循环j的时候更新一个maxx表示最大的dp[i-1][r-1],
然后就是dp[i][j] = max(dp[i][j-1], a[j] + maxx);
ans是最大的dp[i][n]。
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
#include <stack>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <string>
#include <math.h>
#include <stdlib.h>
#include <time.h>
using namespace std;

#define LL long long
#define N 1010
#define mod 1000000007
int a[N],dp[N][N];
int main()
{
    int T,n,k;
    cin>>T;
    while(T--)
    {
        cin>>n>>k;
        int maxx=0;
        memset(dp,0,sizeof(dp));
        for(int i=1;i<=n;i++)
           scanf("%d",&a[i]);
        for(int i=1;i<=k;i++)
        {
            maxx=-a[1];
            for(int j=2;j<=n;j++)
            {
                maxx=max(maxx,dp[i-1][j-1]-a[j]);
                dp[i][j]=max(dp[i][j-1],maxx+a[j]);
            }
        }
        printf("%d\n",dp[k][n]);
    }
}



版权声明:乌拉拉,乌拉拉,世界正在变大,我也在变大。 --- zoro 举报

相关文章推荐

【动态规划】【SCOI2011】股票交易

【题目描述】 最近lxhgww又迷上了投资股票,通过一段时间的观察和学习,他总结出了股票行情的一些规律。 通过一段时间的观察,lxhgww预测到了未来T天内某只股票的走势,第i天的股票买入价为每股AP...
  • Whjpji
  • Whjpji
  • 2012-02-24 20:50
  • 1178

完成程序设计课程的大作业,用python写的简单的股票交易系统

# coding=utf-8 """ @author: liujiawei (Sy1507518),hanxu (Sy1507522) @license: GPL @contact: ...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

基于JFreeChart的股票交易K线图停牌日期缺口优化完整解决方案

JFreeChart绘制K线图停牌日期缺口优化   摘要 这是在绘制股票交易K线图时遇到的一个问题,有关问题的优化方案,与一些具体的实现   方法,以及在这个过程中的心得。   关键词 JFr...

LeetCode 309. Best Time to Buy and Sell Stock with Cooldown(股票交易)

原题网址:https://leetcode.com/problems/best-time-to-buy-and-sell-stock-with-cooldown/ Say you have an ...

Best Time to Buy and Sell Stock 股票交易最大收益

主要是利用动态规划的思想解决问题。Best Time to Buy and Sell Stock I Say you have an array for which the ith element...

bzoj1855: [Scoi2010]股票交易

1855: [Scoi2010]股票交易 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 1132  Solved: 550 [Submit][St...

DP——BZOJ1855/Luogu2569 [SCOI2010]股票交易

题面:BZOJ1855 Luogu2569 DP肯定的 状态:f[i][j]表示前i天目前持有j股的最大收益 有几种转移方式: 不买不卖:f[i][j]=f[i-1][j] 买:f[i][j...

bzoj1855 股票交易 动态规划&单调队列

动态规划,设f[i][j]为第i天股票j的最大收益,有三种转移: 1.不操作,f[i][j]=f[i-1][j]; 2.买入,f[i][j]=max{f[i-w-1][k]+(k-j)*api},其中...

spring amqp股票交易(四)

前面的两篇文章使用了Swing,此文将UI从Swing转回Web.此文还是用到前面大部分东东,只是不再使用main方法启动spring容器,使用servlet服务器(比如jetty)取而代之.serv...

获取全球各大证券交易所的全部股票交易信息

幻想过这样的两种能力,一是回到过去,二是预见未来。时间逆转回到过去,这更多的是在文艺作品中能够出现的情节。而预见未来,我们正在努力,希望可以更准确地预见更长时间内更多的细节。例如在瞬息万变的股票交易市...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)